log4net的使用

來源:互聯網
上載者:User
1.引言
       日誌對於應用程式來說,其重要性不言無喻,在編碼時,可以協助開發人員偵錯工具.在應用發布以後,可以跟蹤應用程式的運行情況,必要時找出錯誤,或協助以後審計.然而在應用程式中插入日誌需要花費很多精力.一般來說大約4%的代碼是專門用來記錄日誌的.所以即使對於一個不大的應用軟體來說,也會插入上千條日誌代碼.在強調可重用組件開發的今天,除了自己的從頭到尾開發一個可重用的日誌操作類以外,對於.net應用程式,我們可以使用apache的log4net日誌操作包(對於java,則有Log4j).官方網站:http://logging.apache.org/log4net/,最新版本為1.2.10.

2.執行個體
log4net可以通過程式來配置,當然通過設定檔來配置會更靈活.讓我們來嘗試一下在一個簡單的應用MyApp中使用log4net.
如下(記得先引用log4net程式集):

using System;
using log4net;
using log4net.Config;
namespace Com.Foo
{
    public class MyApp
    {
        // Define a static logger variable so that it references the
        // Logger instance named "MyApp".
        private static readonly ILog log = LogManager.GetLogger(typeof(MyApp));

        static void Main(string[] args)
        {
            // Set up a simple configuration that logs on the console.
            BasicConfigurator.Configure();
            log.Info("Entering application.");
            Bar bar = new Bar();
            bar.DoIt();
            log.Info("Exiting application.");
            Console.Read();
        }
    }
    public class Bar
    {
        private static readonly ILog log = LogManager.GetLogger(typeof(Bar));

        public void DoIt()
        {
            log.Debug("Did it again!");
        }
    }
}

運行結果如下:

3.log4net簡介
  3.1 Log4net的結構
log4net有四種主要的組件,分別是Logger(記錄器), Repository(庫), Appender(附著器)以及 Layout(布局).

  3.1.1 Logger
Logger是log4net的核心組件,也是應用程式需要互動的主要組件,它代表了Log4net的日誌記錄器,它能夠對日誌資訊進行分類篩選,就是決定什麼日誌資訊應用被輸出,什麼日誌資訊應該被忽略。產生的日誌訊息並不直接顯示,還要預先經過Layout的格式化處理後才會輸出。
Log4net架構定義了一個ILog介面,所有的logger類都必須實現這個介面。如果你想實現一個自訂的logger,你必須首先實現這個介面。

ILog介面的定義如下:
public interface ILog
{
  void Debug(object message);
  void Info(object message);
  void Warn(object message);
  void Error(object message);
  void Fatal(object message);

//以上的每一個方法都有一個重載的方法,用來支援異常處理。
//每一個重載方法都如下所示,有一個異常類型的附加參數。
  void Debug(object message, Exception ex);

  // ...

//Boolean 屬性用來檢查Logger的記錄層級
  bool isDebugEnabled;
  bool isInfoEnabled;
  //… 其他方法對應的Boolean屬性

}

  3.1.2 日誌的層級
log4net採用記錄層級機制,簡化了控制日誌的輸出步驟.
Fatal():輸出ERROR層級的日誌資訊.
Error():輸出ERROR層級的日誌資訊.
Warn() :輸出WARN層級的日誌資訊.
Info() :輸出INFO層級的日誌資訊.
Debug():輸出Debug層級的日誌資訊.

 3.2 Appender(附著器)
Appender組件決定將日誌資訊輸出到什麼地方.比如控制台(Console),檔案(File).

 3.3 Layout(布局)
Layout組件用來決定日誌的輸出格式.

4.使用設定檔來使用log4net
對於開始的例子可以如下:

using System;
using System.IO;
using log4net;
using log4net.Config;
namespace Com.Foo
{
    public class MyApp
    {
        // Define a static logger variable so that it references the
        // Logger instance named "MyApp".
        private static readonly ILog log = LogManager.GetLogger(typeof(MyApp));

        static void Main(string[] args)
        {
            // Set up a simple configuration that logs on the console.
            //BasicConfigurator.Configure();
            XmlConfigurator.Configure(new System.IO.FileInfo("ConsoleApplication1.exe.config"));

            log.Info("Entering application.");
            Bar bar = new Bar();
            bar.DoIt();
            log.Info("Exiting application.");
            Console.Read();
        }
    }
    public class Bar
    {
        private static readonly ILog log = LogManager.GetLogger(typeof(Bar));

        public void DoIt()
        {
            log.Debug("Did it again!");
        }
    }
}

相應的設定檔如下:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
    </configSections>
    <!--log4net配置-->
    <log4net>
        <!-- A1 is set to be a ConsoleAppender -->
        <appender name="A1" type="log4net.Appender.ConsoleAppender">

            <!-- A1 uses PatternLayout -->
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%-4timestamp [%thread] %-5level %logger %ndc - %message%newline" />
            </layout>
        </appender>

        <!-- Set root logger level to DEBUG and its only appender to A1 -->
        <root>
            <level value="DEBUG" />
            <appender-ref ref="A1" />
        </root>
    </log4net>
</configuration>

詳細解釋請參照:
http://logging.apache.org/log4net/release/manual/configuration.html


聯繫我們

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