好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Log4Net组件的应用详解

Log4Net组件的应用详解

第一步:

添加并应用Log4net.dll。然后在Web.config文件中添加下面的配置局

<configSections>
    <section name= " log4net "  type= " log4net.Config.Log4NetConfigurationSectionHandler, log4net "  />
</configSections>

复制代码

第二步:

新建Log4Net.config的配置文件,并在其中添加下面的配置信息:

<?xml version= " 1.0 "  encoding= " UTF-8 " ?>
<log4net debug= " false " >

  <!--按日期分割日志文件 一天一个-->
  <appender name= " LogFileAppenderByDate "  type= " log4net.Appender.RollingFileAppender "  >

    <!--是否续写-->
    <param name= " AppendToFile "  value= " true "  />
    <!--最小锁定模型以允许多个进程可以写入同一个文件-->
    <param name= " LockingModel "  value= " log4net.Appender.FileAppender.MinimalLock "  />
    <param name= " StaticLogFileName "  value= " true "  />
    <!--保存路径-->
    <param name= " File "  value= " d:\Log\\ "  />
    <param name= " DatePattern "  value= " yyyy-MM-dd.LOG "  />
    <param name= " StaticLogFileName "  value= " false "  />
    <param name= " RollingStyle "  value= " Date "  />
    <layout type= " log4net.Layout.PatternLayout " >
      <param name= " ConversionPattern "  value= " 时间:%d %n级别:%level %n类名:%c%n文件:%F 第%L行%n日志内容:%m%n-----------------------------------------%n%n "  />
    </layout>
  </appender>

  <!--按日志容量分割日志文件 10KB一个-->
  <appender name= " LogFileAppenderBySize "  type= " log4net.Appender.RollingFileAppender "  >
    <!--是否续写-->
    <param name= " AppendToFile "  value= " true "  />
    <!--最小锁定模型以允许多个进程可以写入同一个文件-->
    <param name= " LockingModel "  value= " log4net.Appender.FileAppender.MinimalLock "  />

    <param name= " StaticLogFileName "  value= " true "  />

    <!--按照文件的大小进行变换日志文件-->
    <param name= " RollingStyle "  value= " Size "  />
    <param name= " File "  value= " log.txt "  />
    <!--单个文件最大数量 好像只有在 按Size分割时有效-->
    <param name= " MaximumFileSize "  value= " 200KB " />
    <!--保留的log文件数量 超过此数量后 自动删除之前的   好像只有在 按Size分割时有效-->
    <param name= " MaxSizeRollBackups "  value= " 2 "  />

    <param name= " StaticLogFileName "  value= " false "  />
    <layout type= " log4net.Layout.PatternLayout " >
      <param name= " ConversionPattern "  value= " 发生时间:%d %n事件级别:%level %n相关类名:%c%n程序文件:%F 第%L行%n日志内容:%m%n-----------------------------------------%n%n "  />
    </layout>
  </appender>

  <!--记录日志到数据库-->
  <appender name= " AdoNetAppender "  type= " log4net.Appender.AdoNetAppender " >
    <bufferSize value= " 1 "  />
    <!--缓冲大小-->
    <connectionType value= " System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 "  />
    <connectionString value= " Data Source=.\SQLEXPRESS;Initial Catalog=CVDS;User ID=sa;Password=sasa "  />
    <commandText value= " INSERT INTO Log([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception) "  />
    <parameter>
      <parameterName value= " @log_date "  />
      <dbType value= " DateTime "  />
      <layout type= " log4net.Layout.RawTimeStampLayout "  />
    </parameter>
    <parameter>
      <parameterName value= " @thread "  />
      <dbType value= " String "  />
      <size value= " 255 "  />
      <layout type= " log4net.Layout.PatternLayout " >
        <conversionPattern value= " %thread "  />
      </layout>
    </parameter>
    <parameter>
      <parameterName value= " @log_level "  />
      <dbType value= " String "  />
      <size value= " 50 "  />
      <layout type= " log4net.Layout.PatternLayout " >
        <conversionPattern value= " %level "  />
      </layout>
    </parameter>
    <parameter>
      <parameterName value= " @logger "  />
      <dbType value= " String "  />
      <size value= " 255 "  />
      <layout type= " log4net.Layout.PatternLayout " >
        <conversionPattern value= " %logger "  />
      </layout>
    </parameter>
    <parameter>
      <parameterName value= " @message "  />
      <dbType value= " String "  />
      <size value= " 4000 "  />
      <layout type= " log4net.Layout.PatternLayout " >
        <conversionPattern value= " %message "  />
      </layout>
    </parameter>
    <parameter>
      <parameterName value= " @exception "  />
      <dbType value= " String "  />
      <size value= " 2000 "  />
      <layout type= " log4net.Layout.ExceptionLayout "  />
    </parameter>
  </appender>

  <root>
    <level value= " INFO "  />
    <!--启用按日期分割-->
    <appender- ref   ref = " LogFileAppenderByDate "  />
    <!--启用按容量分割-->
    <!--<appender- ref   ref = " LogFileAppenderBySize "  />-->
    <!--启用保存到数据库-->
    <!--<appender- ref   ref = " AdoNetAppender "  />-->
  </root>

</log4net>

复制代码

第三步:

在Global.asax文件中的Application_Start事件中添加如下代码:

  protected   void  Application_Start( object  sender, EventArgs e)
  {
        //  Code that runs on application startup
      log4net.Config.XmlConfigurator.ConfigureAndWatch( new  FileInfo(Server.MapPath( " Log4Net.config " )));  
  }

复制代码

第四步:调用LOG4net 写日志

          protected   void  Button2_Click( object  sender, EventArgs e)
        {
                     ILog logs = LogManager.GetLogger( typeof (TEST));

           logs.Fatal( " Excption:这里就是要提示的LOG信息 " );
        }

复制代码

也可以通过写一个LogHelper.cs类进行封装:

using  System;
using  System.Collections.Generic;
using  System.Web;
using  log4net;

namespace  SBIT.Web.Class
{
     ///   <summary>
     ///  日志辅助类
     ///   </summary>
     public   class  LogHelper
    {
         private   static  ILog log;
         private   static  LogHelper logHelper =  null ;
         ///   <summary>
         ///  初始化
         ///   </summary>
         ///   <returns></returns>
         public   static  ILog GetInstance()
        {
            logHelper =  new  LogHelper( null );

             return  log;
        }
         ///   <summary>
         ///  初始化
         ///   </summary>
         ///   <param name="configPath"></param>
         ///   <returns></returns>
         public   static  ILog GetInstance( string  configPath)
        {
            logHelper =  new  LogHelper(configPath);

             return  log;
        }
         ///   <summary>
         ///  构造函数
         ///   </summary>
         ///   <param name="configPath"></param>
         private  LogHelper( string  configPath)
        {
             if  (! string .IsNullOrEmpty(configPath))
            {
                log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
                log4net.Config.XmlConfigurator.Configure( new  System.IO.FileInfo(configPath));
            }
             else
            {
                log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
            }
        }

    }
}

复制代码

通过封装类写日志的方法如下:

  private   static   readonly  ILog logs = LogHelper.GetInstance();  // LogManager.GetLogger(typeof(TEST));
         protected   void  Button2_Click( object  sender, EventArgs e)
        {
                logs.Fatal( " Excption:这里就是要提示的LOG信息 " );
        }

复制代码

代码下载如下:

/Files/huanghai223/ReportProject_web.rar

作者: Leo_wl

    

出处: http://www.cnblogs.com/Leo_wl/

    

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

版权信息

查看更多关于Log4Net组件的应用详解的详细内容...

  阅读:33次

上一篇: Sizzle引擎

下一篇:Unity