log4net使用詳解

來源:互聯網
上載者:User

說明:本程式示範如何利用log4net記錄程式日誌資訊。log4net是一個功能著名的開源日誌記錄組件。利用log4net可以方便地將日誌資訊記錄到檔案、控制台、Windows事件記錄和資料庫(包括MS SQL Server, Access, Oracle9i,Oracle8i,DB2,SQLite)中。並且我們還可以記載控制要記載的記錄層級,可以記載的日誌類別包括:FATAL(致命錯誤)、ERROR(一般錯誤)、WARN(警告)、INFO(一般資訊)、DEBUG(調試資訊)。要想擷取最新版本的log4net組件庫,可以到官方網站http://logging.apache.org/log4net/下載。現在的最新版本是1.2.10。

下面的例子展示了如何利用log4net記錄日誌 。

首先從官方網站下載最近版本的log4net組件,現在的最新版本是1.2.10。在程式中我們只需要log4net.dll檔案就行了,添加對log4net.dll的引用,就可以在程式中使用了。

接著我們配置相關的設定檔(WinForm對應的是*.exe.config,WebForm對應的是*.config),本執行個體中是控制台應用程式,配置如下(附各配置的說明): <? xml version="1.0" encoding="utf-8"  ?>
< configuration >
   < configSections >
     < section  name ="log4net"  type ="System.Configuration.IgnoreSectionHandler" />
   </ configSections >
   < appSettings >
   </ appSettings >
   < log4net >
     <!-- 定義輸出到檔案中 -->
     < appender  name ="LogFileAppender"  type ="log4net.Appender.FileAppender" >
       <!-- 定義檔案存放位置 -->
       < file  value ="D:/log4netfile.txt"   />
       < appendToFile  value ="true"   />
       < rollingStyle  value ="Date"   />
       < datePattern  value ="yyyyMMdd-HH:mm:ss"   />
       < layout  type ="log4net.Layout.PatternLayout" >
         <!-- 每條日誌末尾的文字說明 -->
         < footer  value ="by 周公"   />
         <!-- 輸出格式 -->
         <!-- 範例:2008-03-26 13:42:32,111 [10] INFO  Log4NetDemo.MainClass [(null)] - info -->
         < conversionPattern  value ="記錄時間:%date 線程ID:[%thread] 記錄層級:%-5level 出錯類:%logger property:[%property{NDC}] - 錯誤描述:%message%newline"   />
       </ layout >
     </ appender >
     <!-- 定義輸出到控制台命令列中 -->
     < appender  name ="ConsoleAppender"  type ="log4net.Appender.ConsoleAppender" >
       < layout  type ="log4net.Layout.PatternLayout" >
         < conversionPattern  value ="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"   />
       </ layout >
     </ appender >
     <!-- 定義輸出到windows事件中 -->
     < appender  name ="EventLogAppender"  type ="log4net.Appender.EventLogAppender" >
       < layout  type ="log4net.Layout.PatternLayout" >
         < conversionPattern  value ="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"   />
       </ layout >
     </ appender >
     <!-- 定義輸出到資料庫中,這裡舉例輸出到Access資料庫中,資料庫為C盤的log4net.mdb -->
     < appender  name ="AdoNetAppender_Access"  type ="log4net.Appender.AdoNetAppender" >
       < connectionString  value ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:log4net.mdb"   />
       < commandText  value ="INSERT INTO LogDetails ([LogDate],[Thread],[Level],[Logger],[Message]) VALUES (@logDate, @thread, @logLevel, @logger,@message)"   />
       <!-- 定義各個參數 -->
       < parameter >
         < parameterName  value ="@logDate"   />
         < dbType  value ="String"   />
         < size  value ="240"   />
         < layout  type ="log4net.Layout.PatternLayout" >
           < conversionPattern  value ="%date"   />
         </ layout >
       </ parameter >
       < parameter >
         < parameterName  value ="@thread"   />
         < dbType  value ="String"   />
         < size  value ="240"   />
         < layout  type ="log4net.Layout.PatternLayout" >
           < conversionPattern  value ="%thread"   />
         </ layout >
       </ parameter >
       < parameter >
         < parameterName  value ="@logLevel"   />
         < dbType  value ="String"   />
         < size  value ="240"   />
         < layout  type ="log4net.Layout.PatternLayout" >
           < conversionPattern  value ="%level"   />
         </ layout >
       </ parameter >
       < parameter >
         < parameterName  value ="@logger"   />
         < dbType  value ="String"   />
         < size  value ="240"   />
         < layout  type ="log4net.Layout.PatternLayout" >
           < conversionPattern  value ="%logger"   />
         </ layout >
       </ parameter >
       < parameter >
         < parameterName  value ="@message"   />
         < dbType  value ="String"   />
         < size  value ="240"   />
         < layout  type ="log4net.Layout.PatternLayout" >
           < conversionPattern  value ="%message"   />
         </ layout >
       </ parameter >
     </ appender >
     <!-- 定義日誌的輸出媒介,下面定義日誌以四種方式輸出。也可以下面的按照一種類型或其他類型輸出。 -->
     < root >
       <!-- 檔案形式記錄日誌 -->
       < appender-ref  ref ="LogFileAppender"   />
       <!-- 控制台控制顯示日誌 -->
       < appender-ref  ref ="ConsoleAppender"   />
       <!-- Windows事件記錄 -->
       < appender-ref  ref ="EventLogAppender"   />
       <!--  如果不啟用相應的日誌記錄,可以通過這種方式注釋掉
      <appender-ref ref="AdoNetAppender_Access" />
       -->
     </ root >
    
   </ log4net >
</ configuration >

程式檔案: using  System;
using  System.Collections.Generic;
using  System.Text;
using  System.Windows.Forms;
using  System.Reflection;
using  log4net;

// 注意下面的語句一定要加上,指定log4net使用.config檔案來讀取配置資訊
// 如果是WinForm(假定程式為MyDemo.exe,則需要一個MyDemo.exe.config檔案)
// 如果是WebForm,則從web.config中讀取相關資訊
[assembly: log4net.Config.XmlConfigurator(Watch  =   true )]
namespace  Log4NetDemo
{

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.