asp.net + winform + log4net 使用樣本

來源:互聯網
上載者:User

log4net, 是 apache.org 在 log4j的基礎上推出的針對.NET程式的開源的日誌組件。

log4net目前的最新版本是 1.2.10,log4net支援的日誌儲存方式,可謂豐富之極,包括:

  • 存入SQL SERVER 資料庫
  • 存入ACCESS資料庫
  • 存入ORACLE資料庫
  • 存入DB2資料庫
  • 存入SQLLite資料庫
  • 產生asp.net 的trace模式的日誌
  • 緩衝方式的日誌
  • 直接輸出到控制台螢幕(支援彩色)
  • 存入系統日誌
  • 產生單檔案日誌
  • 產生多檔案日誌
  • 儲存在記憶體中
  • 利用net send 發送給指定的網路域或主機
  • 遠程組建記錄檔
  • 利用SMTP發送日誌到指定的郵箱
  • 利用IIS的SMTP,將日誌放入MAIL目錄
  • 利用UDP協議發送日誌

 

上面的,各種日誌儲存方式的具體配置細節, 在這裡

log4net的日誌記錄分為7級,從高到低為: OFF、FATAL、ERROR, WARN, INFO, DEBUG, ALL

要使用log4net,必須給log4net指定好設定檔, 有兩種方法:

  1. 放入 web.config 或 app.config
  2. 放入一個單獨的設定檔,如: log4net.config (推薦)

 

log4net的配置格式,大致如下:

<?xml version="1.0" encoding="utf-8" ?><log4net debug="false">    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"><file value="log.txt" /><appendToFile value="true" /><rollingStyle value="Composite" /><datePattern value=".yyyyMMdd" /><maxSizeRollBackups value="10" /><maximumFileSize value="1MB" /><staticLogFileName value="true" /><layout type="log4net.Layout.PatternLayout"><conversionPattern value="%date %-5level %logger -%m%n" /></layout>    </appender>    <root>        <level value="WARN" />        <appender-ref ref="RollingLogFileAppender" />    </root></log4net>

上面給出的是一個獨立的log4net的設定檔,大體解釋一下:

<log4net></log4net>是根,<root></root>是必須的,是所有日誌格式的根,其中定義了,日誌記錄的基礎層級,和當前啟用的日誌記錄方式, 上面的 appender 將繼承root的level

appender中的 type 指明了,採用哪種方式來記錄日誌,具體取值,大家去 這裡 查看

layout是日誌輸出格式的定義

%d, %date :表示當然的時間

%level : 表示日誌的層級

%logger, %c:表示日誌產生的主題,通常是所在的類名,便於定位問題

%t, %thread: 表示 所在進程

%L:   表示產生日誌的代碼所在的行數

%m, %message :表示日誌的具體內容

%n, %newline: 換行

————————————————————————–

我上面的是一個多檔案日誌的配置, 每天產生一個記錄檔,日誌名字是 log.txt.20081228 的形式

 

下面重點說一下使用的具體步驟:

1.  加入 log4net.dll 的引用

 

2. 對於 web applicationwinform

AssemblyInfo.cs 中,加入

[assembly: log4net.Config.XmlConfigurator(ConfigFile="log4net.config", Watch=true)]//log4net.config 是設定檔的名稱,可以自行設定//Watch 是表示在程式運行期間是否監視該設定檔的變動

3. 對於 website 項目,需要在 global.asax.cs 裡,加入

protected void Application_Start(Object sender, EventArgs e){    //配置log4net    log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo("log4net.config"));}

4. 實際調用

    class Program    {        private static readonly ILog log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);        //System.Reflection.MethodBase.GetCurrentMethod().DeclaringType         //是利用反射擷取當前類的type,記錄在日誌中,便於定位日誌發生的所在        static void Main(string[] args)        {            log.Error("這是一個錯誤記錄檔");            log.Fatal("這是一個致命的錯誤記錄檔");            log.Warn("這是一條警告日誌");            log.Info("這是一條普通訊息");            Console.Read();        }    }

下面附上一張產生的日誌內容的

 

案例完整代碼下載

聯繫我們

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