实现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&quot;.log&quot;" /><!--文件名后缀(带日期)-->
  
  <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="&lt;HR COLOR=red&gt;%n异常时间:%d [%t] &lt;BR&gt;%n异常级别:%-5p 

          &lt;BR&gt;%n异 常 类:%c [%x] &lt;BR&gt;%n%m &lt;BR&gt;%n &lt;HR Size=1&gt;" />
      </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="&lt;HR COLOR=red&gt;%n日志时间:%d [%t] &lt;BR&gt;%n日志级别:%-5p 

&lt;BR&gt;%n日 志 类:%c [%x] &lt;BR&gt;%n%m &lt;BR&gt;%n &lt;HR Size=1&gt;" />
</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

原文地址:https://www.cnblogs.com/luoxiaonet/p/2024605.html