在ASP.Net2.0中使用Log4Net

來源:互聯網
上載者:User
 第一種方法 在web.config中寫設定檔
  
  Log4Net首頁: http://logging.apache.org/log4net/,下載Log4Net
  Log4Net主要由Logger, Appender, Filter, Layout 4個組件構成, 一般情況下後3個組件在設定檔中配置.
  Logger
  負責產生日誌訊息,可以在代碼中調用
  Appender
  負責向儲存介質中追加日誌, 一般在設定檔中配置,根據儲存日誌介質的不同Appender有多種, 比如:AdoNetAppender,EventLogAppender,RollingFileAppender等.參見: http://logging.apache.org/log4net/release/config-examples.html.
  Filter
  負責過濾日誌, 一般和Appender聯合使用,在設定檔中配置
  Layout
  負責日誌訊息的格式, 一般和Appender聯合使用,在設定檔中配置。
  使用步驟
   1.給web項目添加引用log4net.dll
   2. 在web.config的configuration(最頂層)下加 (網上文章是把log4net放到configSections前面,但是我編譯不通過)
  
  <configSections>
   <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
   </configSections>
   <log4net>
   <root></root>
   <logger name="Test">
   <level value="DEBUG" />
   <appender-ref ref="rollingFile" />
   </logger>
   <appender name="rollingFile" type="log4net.Appender.RollingFileAppender,log4net" >
   <param name="File" type="" value="log/" />
   <param name="AppendToFile" value="true" />
   <param name="RollingStyle" value="Date" />
   <param name="DatePattern" value="yyyyMMdd" />
   <param name="StaticLogFileName" value="false" />
   <layout type="log4net.Layout.PatternLayout,log4net">
   <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
   <param name="Header" value=" ----------------------header-------------------------- " />
   <param name="Footer" value=" ----------------------footer-------------------------- " />
   </layout>
   </appender>
   </log4net>
  
  
  
  Logger的Level屬性可以設以下值,由高到低為OFF,FATAL, ERROR,WARN,INFO,DEBUG,ALL. 高於設定值方法都能寫入日誌, Off所有的寫入方法都不寫到日誌裡,ALL則相反。例如當我們設成Info時,logger.Debug就會被忽略而不寫入檔案,但是FATAL, ERROR,WARN,INFO會被寫入,因為他們等級高於INFO;
   3. 在Global.ascx(如果項目中沒有,則建立)中的Application_Start方法中加入
  
  void Application_Start(object sender, EventArgs e)
   {
   // Code that runs on application startup
   log4net.Config.XmlConfigurator.Configure();
  
   }
  
  
   4.配置<log4net>標籤中的內容
  
  
  
  <log4net>
   <root>
   <!--
   <level value="ALL" />
   <appender-ref ref="rootFile" />
   -->
   </root>
   <logger name="Test">
   <level value="DEBUG" />
   <appender-ref ref="rollingFile" />
   </logger>
   <appender name="rollingFile" type="log4net.Appender.RollingFileAppender,log4net" >
   <param name="File" type="" value="log/" />
   <param name="AppendToFile" value="true" />
   <param name="RollingStyle" value="Date" />
   <param name="DatePattern" value="yyyyMMdd" />
   <param name="StaticLogFileName" value="false" />
   <layout type="log4net.Layout.PatternLayout,log4net">
   <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
   <param name="Header" value=" ----------------------header-------------------------- " />
   <param name="Footer" value=" ----------------------footer-------------------------- " />
   </layout>
</appender>
   </log4net>
  
  
  
   log4net標籤的架構如下, 該標籤下有root, logger, appender等標籤
   root標籤
   所有的logger都從root繼承, root本身也是一個logger
   logger標籤
   每個logger標籤代表一個logger,appender-ref表示該logger產生的日誌訊息傳遞給哪個appender,一個logger可以把相同的訊息傳遞給多個appender記錄
   appender標籤
   每個appender表示一個日誌的儲存位置,name不能和type一樣
  
  類型是RollingFileAppender
  <appender name="rollingFile" type="log4net.Appender.RollingFileAppender,log4net" >
   <param name="File" value="log" /> 檔案名稱以log為開頭
   <param name="AppendToFile" value="true" /> 是否是向檔案中追加日誌
   <param name="RollingStyle" value="Date" /> 日誌根據日期滾動
   <param name="DatePattern" value="yyyyMMdd" /> 記錄檔名格式為: log20071120
   <param name="StaticLogFileName" value="false" /> 記錄檔名是否是固定不變的
  
   日誌訊息的格式, 表示換行
   <layout type="log4net.Layout.PatternLayout,log4net">
   <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
   <param name="Header" value=" ----------------------header-------------------------- " />
   <param name="Footer" value=" ----------------------footer-------------------------- " />
   </layout>
  </appender>
  
  訊息模式
  %m(message):輸出的日誌訊息,如ILog.Debug(…)輸出的一條訊息
  %n(new line):換行
  %d(datetime):輸出當前語句啟動並執行時刻
  %r(run time):輸出程式從運行到執行到當前語句時消耗的毫秒數
  %t(thread id):當前語句所在的線程ID
  %p(priority): 日誌的當前優先順序別,即DEBUG、INFO、WARN…等
  %c(class):當前日誌對象的名稱
  %L:輸出語句所在的行號
  %F:輸出語句所在的檔案名稱
  %-數字:表示該項的最小長度,如果不夠,則用空格填充
  5. 在代碼中調用Logger
  
  
  using System;
  using System.Configuration;
  using System.Data;
  using System.Web;
  using System.Web.Security;
  using System.Web.UI;
  using System.Web.UI.HtmlControls;
  using System.Web.UI.WebControls;
  using System.Web.UI.WebControls.WebParts;
  using log4net;
  
  public partial class _Default : System.Web.UI.Page
  {
   protected void Page_Load(object sender, EventArgs e)
   {
   ILog LOGGER = LogManager.GetLogger("Test");
   LOGGER.Debug("測試資訊");
   }
  }
  
  
  
  
  最後,可以在根目錄下找到日誌對應記錄檔。
  本例源碼:下載本文源碼
  註:本文參考部落格園的相關文章,我用的是vs2008,但類庫選得是.net framework2.0.
  另記:做執行個體10分鐘就完成了,這麼短的文章我卻編排了幾個小時,到最後才勉強差人意,真不知寫了那麼多的文章的人是怎麼堅持下去的。 
   
         (二)使用單獨的設定檔,不放在web.config裡
   1.建立一website.
   2.添加一個類庫工程,取名LogNet
  
  3. 為LogNet工程引用log4net.dll
  4. 雙擊開啟AssemblyInfo.cs在最後添加
  [assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]5. 為LogNet工程添加一個logBLL.cs檔案,我們把日誌調用封裝到這一層
  
  
  using System;
  using System.Collections.Generic;
  using System.Text;
  namespace LogNet
  {
   public class LogBLL
   {
   public static void debug(string message)
   {
   log4net.ILog log = log4net.LogManager.GetLogger("Test");
   if (log.IsDebugEnabled)
   {
   log.Debug(message);
   }
   log = null;
   }
   public static void error(string message)
   {
   log4net.ILog log = log4net.LogManager.GetLogger("Test");
if (log.IsErrorEnabled)
   {
   log.Error(message);
   }
   log = null;
   }
   public static void fatal(string message)
   {
  
   log4net.ILog log = log4net.LogManager.GetLogger("Test");
   if (log.IsFatalEnabled)
   {
   log.Fatal(message);
   }
   log = null;
   }
   public static void info(string message)
   {
   log4net.ILog log = log4net.LogManager.GetLogger("Test");
   if (log.IsInfoEnabled)
   {
   log.Info(message);
   }
   log = null;
   }
  
   public static void warn(string message)
   {
   log4net.ILog log = log4net.LogManager.GetLogger("Test");
   if (log.IsWarnEnabled)
   {
   log.Warn(message);
   }
   log = null;
   }
   }
  }
  
  
  6.在web網站根目錄下添加一個log4net.config檔案,內容如下
  <?xml version="1.0" encoding="utf-8" ?>
  <configuration>
   <configSections>
   <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
   </configSections>
   <log4net>
   <root>
   <!--
   <level value="ALL" />
   <appender-ref ref="rootFile" />
   -->
   </root>
   <logger name="Test">
   <level value="DEBUG" />
   <appender-ref ref="rollingFile" />
   </logger>
   <appender name="rollingFile" type="log4net.Appender.RollingFileAppender,log4net" >
   <param name="File" type="" value="log/" />
   <param name="AppendToFile" value="true" />
   <param name="RollingStyle" value="Date" />
   <param name="DatePattern" value="yyyyMMdd" />
   <param name="StaticLogFileName" value="false" />
   <layout type="log4net.Layout.PatternLayout,log4net">
   <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
   <param name="Header" value=" ----------------------header-------------- " />
   <param name="Footer" value=" ----------------------footer-------------- " />
   </layout>
   </appender>
   </log4net>
  </configuration>
  7.編譯LogNet工程
  8.為web引入LogNet工程bin目錄下的LogNet.dll
  9.在default.aspx.cs裡寫入如下代碼
  using System;
  using System.Configuration;
  using System.Data;
  using System.Web;
  using System.Web.Security;
  using System.Web.UI;
  using System.Web.UI.HtmlControls;
  using System.Web.UI.WebControls;
  using System.Web.UI.WebControls.WebParts;
  using LogNet; //引用程式集
  public partial class _Default : System.Web.UI.Page
  {
   protected void Page_Load(object sender, EventArgs e)
   {
   if (!Page.IsPostBack)
   {
   LogBLL.debug("測試資訊");
   }
   }
  }
  
  10.運行,將在web目錄下的log目錄下看到記錄檔
   ----------------------header--------------------------
  2007-11-24 12:16:24,171 [4] DEBUG LiveBookings - 測試資訊
  2007-11-24 12:16:46,312 [4] DEBUG LiveBookings - 測試資訊
  ----------------------footer-------------------------- 
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.