標籤:
一、介紹
當我們開發軟體時,一般都會加入運行期的跟蹤手段,以方便後續故障分析和Bug調試。.net framework本身提供了一個System.Diagnostics.Trace類來實現流程跟蹤功能,但很多時候卻不能滿足我們的需求,這時往往需要一個更加強大的第三方日誌系統。Log4Net是一個開源的日誌記錄組件。和其他開源組件一樣,它也是從Java中移植過來的。log4net來源於java應用中的log4J。
二、官網以及文檔地址
官方網站:http://logging.apache.org/
:http://logging.apache.org/log4net/download_log4net.cgi 目前最新版本是1.2.15
三、樣本
1、首先建立一個控制台程式
2、在Nuget中下載Log4Net
3、單獨配置在xml檔案中,當然也可以配置在App.config或Web.config中。配置資訊下面詳講。
4、在程式啟動處讀取日誌配置資訊,如果是CS程式,在根目錄的Program.cs中的Main方法中添加下面語句。如果是BS程式,在根目錄的Global.asax.cs(沒有建立一個)中的Application_Start方法中添加:
log4net.Config.XmlConfigurator.Configure();
除了這種方式,也可以直接在項目的AssemblyInfo.cs檔案裡添加以下的語句來定義設定檔的路徑資訊。
[assembly: log4net.Config.XMLConfigurator(ConfigFile = “log4net.config”, Watch = true)]
5、在程式中使用Log4Net
log4net.ILog log = log4net.LogManager.GetLogger("testApp.Logging");//擷取一個日誌記錄器log.Info(DateTime.Now.ToString() + ": login success");//寫入一條新log
可以定義多個log對象,每個log對象分別取設定檔不同的<logger>標記,每個<logger>分別取不同的appender。
這樣就可以用不同的log對象把日誌輸出到不同的檔案或者其它介質。
End。
四、Log4Net的五大組成部分
分別為:Logger記錄器,Appenders附著器, Filters過濾器, Layouts 和Object Renders。
4.1、Logger記錄器
Logger是應用程式需要互動的主要組件,它用來產生日誌訊息。產生的日誌訊息並不直接顯示,還要預先經過Layout的格式化處理後才會輸出。
Log4net架構定義了一個叫做LogManager的類,用來管理所有的Logger對象。它有一個GetLogger()靜態方法,用我們提供的名字參數來檢索已經存在的Logger對象。如果架構裡不存在該Logger對象,它也會為我們建立一個Logger對象。代碼如下所示:
log4net.ILog log = log4net.LogManager.GetLogger("logger-name");
記錄層級:
Logger的Level屬性可以設定為以下值,由高到低為OFF,FATAL,ERROR,WARN,INFO,DEBUG,ALL. 高於設定值方法都不能寫入日誌。
Off所有的寫入方法都不寫到日誌裡,ALL則相反。例如當我們設成Info時,logger.Debug就會被忽略而不寫入檔案,但是FATAL,ERROR,WARN,INFO會被寫入,因為他們等級高於INFO;
4.2Appender
一個好的日誌架構應該能夠產生多目的地的輸出。比如說輸出到控制台或儲存到一個記錄檔。log4net 能夠很好的滿足這些要求。它使用一個叫做Appender的組件來定義輸出介質。正如名字所示,這些組件把它們附加到Logger日誌組件上並將輸出傳遞到輸出資料流中。你可以把多個Appender組件附加到一個日誌對象上。 Log4net架構提供了幾個Appender組件。關於log4net提供的Appender組件的完整列表可以在log4net架構的協助手冊中找到。有了這些現成的Appender組件,一般來說你沒有必要再自己編寫了。但是如果你願意,可以從log4net.Appender.AppenderSkeleton類繼承。
負責向儲存介質中追加日誌, 一般在設定檔中配置,根據儲存日誌介質的不同Appender有多種,
比如:AdoNetAppender,EventLogAppender,RollingFileAppender等.參見:
http://logging.apache.org/log4net/release/config-examples.HTML.
4.3Filter
負責過濾日誌, 一般和Appender聯合使用,在設定檔中配置
4.4Layout
負責日誌訊息的格式, 一般和Appender聯合使用,在設定檔中配置。
Layout 組件用於向使用者顯示最後經過格式化的輸出資訊。輸出資訊可以以多種格式顯示,主要依賴於我們採用的Layout組件類型。可以是線性或一個XML檔案。Layout組件和一個Appender組件一起工作。API協助手冊中有關於不同Layout組件的列表。一個Appender對象,只能對應一個Layout對象。要實現你自己的Layout類,你需要從log4net.Layout.LayoutSkeleton類繼承,它實現了ILayout介面。
----------------------------------------------------------------------
log4net標籤的架構如下, 該標籤下有root, logger, appender等標籤
root標籤
所有的logger都從root繼承, root本身也是一個logger
logger標籤
每個logger標籤代表一個logger,appender-ref表示該logger產生的日誌訊息傳遞給哪個appender,一個logger可以把相同的消
息傳遞給多個appender記錄
appender標籤
每個appender表示一個日誌的儲存位置,name不能和type一樣
設定參數
日誌根據日期滾動
記錄檔名格式為
記錄檔名是否是固定不變的
4.5散打
五、Log4net.config配置
Log4.Net的介紹