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

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM