实现log4.NET记录日志功能【WebForm】
Ⅰ.在ASP.NET页面开发过程中记录日志的一般流程如下:
PS:这是按日期划分日志文本文件,若需要了解怎么写入SQLite数据库,可了解实现log4.NET记录日志功能【WinForm】
一.引用log4net.dll
二.打开global.asa.cs文件,添加以下代码:
using log4net;
protected void Application_Start(Object sender, EventArgs e)
{
log4net.Config.DOMConfigurator.Configure();
}
三.在web.cofig根节点 <configuration> 中加入如下section节
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
</configSections>
四.在web.cofig中,继续以<configuration>的子节点形式增加配置节点
<log4net>
<!--一.以日期为文件名后缀将日志输出到文本文件中-->
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
<!--显示指定文件存放位置-->
<!--<file value="D:\log4netfile.txt" />-->
<!--日志文件名开头,生成的日志文件名格式形如:MonitorConfigLog20110502.log-->
<param name="File" value="MonitorConfigLog" /><!--默认存放根目录-->
<param name="AppendToFile" value="true" />
<param name="MaxSizeRollBackups" value="10"/><!-- 切割最多文件数 -->
<param name="MaximumFileSize" value="10MB"/><!-- 每个文件的大小 -->
<param name="StaticLogFileName" value="false"/>
<rollingStyle value="Date" />
<datePattern value="yyyyMMdd".log"" /><!--文件名后缀(带日期)-->
<layout type="log4net.Layout.PatternLayout">
<footer value="by Xluo" /> <!--每条日志末尾的文字说明-->
<conversionPattern value="*记录时间【%date】 级别【%-5level】 出错位置【%logger 行号:%line】
错误描述:%message%newline" /><!--输出格式-->
</layout>
</appender>
<root>
<!--对“文件形式记录日志”方式启用-->
<appender-ref ref="LogFileAppender" />
</root>
</log4net>
五.写入日志之 ILog接口实例化,写在global.asa.cs文件上端位置:
//创建日志记录组件实例ILog log = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
然后在Application_Error方法中写自定义消息:
protected void Application_Error(Object sender, EventArgs e)
{
log.Info("\r\n客户机IP:"+ Request.UserHostAddress +"\r\n<BR>错误地址:"+Request.Url, Server.GetLastError());
}
Ⅱ.对不同级别日志,进行不同文件写入的处理:
一.增加logger配置节:每一节代表一个日志级别
<logger name="logerror"> <level value="ERROR" /> <appender-ref ref="RollingLogFileAppender" /> </logger> <logger name="loginfo"> <level value="INFO" /> <appender-ref ref="InfoAppender" /> </logger>
很显然,对于不同级别的日志,会通过<appender-ref>节对应到不同的写入方式,到底怎么写呢,
二.名称分别为RollingLogFileAppender、InfoAppender的两个<appender>节如下:
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> <param name="File" value="F:\\AppLog\\" /> <param name="AppendToFile" value="true" /> <param name="MaxSizeRollBackups" value="100" /> <param name="StaticLogFileName" value="false" /> <param name="DatePattern" value="yyyyMMdd".htm"" /> <param name="RollingStyle" value="Date" /> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="<HR COLOR=red>%n异常时间:%d [%t] <BR>%n异常级别:%-5p
<BR>%n异 常 类:%c [%x] <BR>%n%m <BR>%n <HR Size=1>" />
</layout> </appender> <appender name="InfoAppender" type="log4net.Appender.RollingFileAppender"> <param name="File" value="F:\\App\\" /> <param name="AppendToFile" value="true" /> <param name="MaxSizeRollBackups" value="100" /> <param name="StaticLogFileName" value="false" /> <param name="DatePattern" value="yyyyMMdd".htm"" /> <param name="RollingStyle" value="Date" /> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="<HR COLOR=red>%n日志时间:%d [%t] <BR>%n日志级别:%-5p
<BR>%n日 志 类:%c [%x] <BR>%n%m <BR>%n <HR Size=1>" />
</layout> </appender>
三.写入日志之 ILog接口实例化:
public static readonly log4net.ILog loginfo = log4net.LogManager.GetLogger("loginfo"); public static readonly log4net.ILog logerror = log4net.LogManager.GetLogger("logerror");
操作:
if(loginfo.IsInfoEnabled) loginfo.Info("新增一条记录成功!"); if(logerror.IsErrorEnabled) logerror.Error("新增一条记录出错!",se);
参考一:http://logging.apache.org/log4net/release/config-examples.html(log4net 配置示例网站,包括MS Sql、SQLite、Oracle and so on.)
参考二:http://blog.csdn.net/mengyao/archive/2007/11/18/1891390.aspx