1.我们在工具层使用NuGet添加log4net引用包
2.添加LogHelper帮助类
public class LogHelper{private static ILog _lognet = LogManager.GetLogger(typeof(LogHelper));public static void WriterErrorLog(string logMessage) {_lognet.Error(logMessage);}public static void WriterInfoLog(string logMessage) {_lognet.Info(logMessage);}}
3.我们把log4net.config添加到我们web文件中
**在web层按照log4net NewGet包**
<?xml version="1.0" encoding="utf-8" ?>
<configuration><configSections><section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/></configSections><startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" /></startup><log4net><appender name="RollingInfoFile" type="log4net.Appender.RollingFileAppender"><file value="Log/Info/" /><appendToFile value="true" /><!--记录日志写入文件时,不锁定文本文件,防止多线程时不能写Log,官方说线程非安全--><lockingModel type="log4net.Appender.FileAppender+MinimalLock" /><Encoding value="UTF-8" /><!-- 每个文件的大小限制 --><maximumFileSize value="1MB" /><!-- 切割最多文件数 -1表示不限制产生日志文件数--><MaxSizeRollBackups value="-1" /><DatePattern value="yyyyMMdd".log"" /><!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])--><RollingStyle value="Composite" /><param name="DatePattern" value="yyyy-MM-dd/"Info.log"" /><StaticLogFileName value="false" /><layout type="log4net.Layout.PatternLayout"><conversionPattern value="[%date{yyyy-MM-dd HH:mm:ss}] %-5logger - %m%n"/></layout><!--日志等级:OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL --><filter type="log4net.Filter.LevelRangeFilter"><levelMin value="INFO" /><levelMax value="INFO" /></filter></appender><appender name="RollingErrorFile" type="log4net.Appender.RollingFileAppender"><file value="Log/Error/" /><appendToFile value="true" /><!--记录日志写入文件时,不锁定文本文件,防止多线程时不能写Log,官方说线程非安全--><lockingModel type="log4net.Appender.FileAppender+MinimalLock" /><Encoding value="UTF-8" /><!-- 每个文件的大小限制 --><maximumFileSize value="1MB" /><!-- 切割最多文件数 -1表示不限制产生日志文件数--><MaxSizeRollBackups value="-1" /><DatePattern value="yyyyMMdd".log"" /><!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])--><RollingStyle value="Composite" /><param name="DatePattern" value="yyyy-MM-dd/"Error.log"" /><StaticLogFileName value="false" /><layout type="log4net.Layout.PatternLayout"><conversionPattern value="[%date{yyyy-MM-dd HH:mm:ss}] %-5logger - %m%n"/></layout><!--日志等级:OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL --><filter type="log4net.Filter.LevelRangeFilter"><levelMin value="Error" /><levelMax value="Fatal" /></filter></appender><root><level value="ALL"/><appender-ref ref="RollingInfoFile" /><appender-ref ref="RollingErrorFile" /></root></log4net>
</configuration>
4.在web层Global.asax文件中Application_Start();中添加一句代码
//log4netlog4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(Server.MapPath("/log4net.config")));LogHelper.WriteInfoLog("应用程序启动");
5.在这个类中重新写两个方法
void Application_End(object sender, EventArgs e){// 在应用程序关闭时运行的代码LogHelper.WriteInfoLog("应用程序关闭"); }void Application_Error(object sender, EventArgs e){// 在出现未处理的错误时运行的代码var exception = Server.GetLastError();if (exception == null)return;LogHelper.WriteErrorLog(exception.ToString());
#if (!DEBUG)Server.ClearError();
#endif}
6.当我们需要写日志的时候
//错误日志LogHelper.WriteErrorLog(exception.ToString());//日志信息LogHelper.WriteInfoLog(exception.ToString());
日志会记录在我们web层Log文件夹中