zoukankan      html  css  js  c++  java
  • 实现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

  • 相关阅读:
    ubuntu下配置django+apache+mysql+mod_python+Python
    Makefile 学习
    一个查重算法的多种实现思路
    MongoDB基础
    基于ASP.NET MVC 3的企业应用项目总结
    CruiseControl.Net持续集成平台搭建总结
    Cnblogs Start
    JavaScript中的this
    Entity Framework 4.0 的一个bug :DefaultValue问题
    .Net平台下的B/S开发框架
  • 原文地址:https://www.cnblogs.com/luoxiaonet/p/2024605.html
Copyright © 2011-2022 走看看