您的位置:首页 > 其它

实现log4.NET记录日志功能【WebForm】

2011-04-22 10:24 183 查看
Ⅰ.在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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: