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();中添加一句代码
//log4net
log4net.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文件夹中