Log4Net學習筆記.doc_第1頁
Log4Net學習筆記.doc_第2頁
Log4Net學習筆記.doc_第3頁
Log4Net學習筆記.doc_第4頁
Log4Net學習筆記.doc_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

Log4Net學習筆記1. Log4Net環(huán)境的搭建與基本配置2(1) Log4Net框架介紹2(2) Log4Net的環(huán)境配置以及簡單使用22. Log4Net結構2(1) Log4Net核心組件2(2) Logger介紹2(3) Appender介紹3(4) Filter介紹3(5) Layout介紹3(6) Object Render介紹33. logger節(jié)點配置詳解3(1) logger節(jié)點配置3(2) 日志級別等級3(3) ILog對象說明3(4) logger配置使用示例34. appender節(jié)點配置詳解4(1) appender節(jié)點配置4(2) appender的輸出方式(type屬性)4(3) appender配置使用示例55. filter節(jié)點配置詳解5(1) filter節(jié)點配置5(2) filter的類型說明5(3) filter的工作原理5(4) filter的使用示例66. Layout節(jié)點配置詳解6(1) layout節(jié)點配置6(2) layout節(jié)點的type屬性取值6(3) PatterLayout的格式化字符串6(4) PatterLayout格式修飾符7(5) layout的使用示例77. 其它節(jié)點的說明與配置7(1) param節(jié)點7(2) root節(jié)點7(3) log4net節(jié)點7(4) configSections節(jié)點78. 配置文件7(1) 配置文件結構圖8(2) 配置文件示例8(3) 關聯(lián)配置文件8作者:李志偉時間:2014-05-101. Log4Net環(huán)境的搭建與基本配置(1) Log4Net框架介紹Log4net 是 Apache 下一個開放源碼的項目,它是Log4j 的一個克隆版。我們可以控制日志信息的輸出目的地。Log4net中定義了多種日志信息輸出模式。它可以根據(jù)需要將日志輸出到控制臺,文本文件,windows 日志事件查看器中,包括數(shù)據(jù)庫,郵件等等位置,以便我們快速跟蹤程序bug。(2) Log4Net的環(huán)境配置以及簡單使用程序代碼:assembly: log4net.Config.XmlConfigurator(Watch = true)namespace APP02 class Program static void Main(string args) ILog log = log4net.LogManager.GetLogger(Test); log.Error(錯誤, new Exception(發(fā)生了一個異常);/錯誤 log.Fatal(嚴重錯誤, new Exception(發(fā)生了一個致命錯誤);/嚴重錯誤 log.Info(信息); /記錄一般信息 log.Debug(調(diào)試信息);/記錄調(diào)試信息 log.Warn(警告);/記錄警告信息 Console.WriteLine(日志記錄完畢。); Console.Read(); App.config文件配置: 運行結果:2. Log4Net結構(1) Log4Net核心組件Log4net主要分為5個核心組件: Logger, Appender, Filter, Layout, Object Render。(2) Logger介紹Logger是負責日志的記錄者,假設我們需要記錄一些正常的運行時日志和出現(xiàn)異常時的錯誤日志,那么我們可以通過在配置文件當中添加兩個Logger實現(xiàn)。Logger主要用于記錄日志的分類和控制日志的級別。它可以以多種格式輸出日志信息,同時它也可以控制日志的輸出級別。log4net使用繼承體系,也就是說假如存在兩個Logger,名字分別為a.b.c和a.b。那么a.b就是a.b.c的祖先。每個Logger都繼承了它祖先的屬性。(3) Appender介紹Appender提供記錄的介質(zhì),我們可能要將日志輸出到控制臺,文本文件,windows 日志事件查看器中,包括數(shù)據(jù)庫,郵件等等位置。我們可以通過Appender配置實現(xiàn),而且Log4Net當中已經(jīng)默認提供了一些常用的Appender,我們可以簡單地修改一些配置文件就實現(xiàn)同時向數(shù)據(jù)庫和同時向文件中寫入的功能。(4) Filter介紹Filter就是過濾器,使用過濾器可以過濾掉Appender輸出的部分內(nèi)容,只輸出感興趣的日志。(5) Layout介紹Layout用于控制Appender的輸出格式,可以使線性的也可以使XML。一個Appender只能有一個Layout配置。(6) Object Render介紹Object Render將告訴logger如何把一個對象轉(zhuǎn)化為一個字符串記錄到日志里。ILog中定義的記錄日志的方法接收的參數(shù)是Object,而不是String。例如你想把Orange對象記錄到日志中,但此時logger只會調(diào)用Orange默認的ToString方法而已。所以要定義一個OrangeRender類實現(xiàn)log4net.ObjectRender.IObjectRender接口,然后注冊它。這時logger就會知道如何把Orange記錄到日志中了。3. logger節(jié)點配置詳解(1) logger節(jié)點配置logger節(jié)點支持的屬性:name、必須的,logger的名稱,在代碼中得到ILog對象時用到。additivity可選,取值是true或false,默認值是true。設置為false時將阻止父logger中的appender。logger支持的子元素:level、appender-ref、param。level最多一個。在這個級別或之上的才會被記錄。OFF、FATAL、ERROR、WARN 、INFO、DEBUG、ALLappender-ref0個或多個,要引用的appender的名字。param0個或多個,設置一些參數(shù)。(2) 日志級別等級高到底分別為:OFF FATAL ERROR WARN INFO DEBUG ALL(3) ILog對象說明ILog是實現(xiàn)Logger的一個接口,ILog定義了5個方法(Debug,Inof,Warn,Error,Fatal)分別對不同的日志等級記錄日志。這5個方法都有1個重載,以Debug為例說明一下,其它的和它差不多。ILog中對Debug方法的定義如下:void Debug(object message);void Debug(object message, Exception exception);還有一個布爾屬性:bool IsDebugEnabled get; 如果使用Debug(object message, Exception exception)則無論Layout如何配置,日志都會輸出Exception信息,包括Exception的Message和Trace。如果使用Debug(object message),則無論Layout如何配置是不會輸出Exception信息的。在代碼中可以使用LogManager類來得到Logger配置下的相應的ILog對象,LogManager類用來管理所應得Logger,它的GetLogger靜態(tài)方法,可以獲得配置文件中相應的Logger,代碼如下:ILog log = LogManager.GetLogger(logger-name)(4) logger配置使用示例使用多個appender同事到控制臺與文件中輸出日志 使用logger的繼承機制 4. appender節(jié)點配置詳解(1) appender節(jié)點配置支持的屬性:name、type(name屬性必須唯一,type屬性必須指定)。name必須的,appender對象的名稱type必須的,appender對象的輸出類型常用的子元素:appender-ref、filter、layout、paramappender-ref0個或多個,允許此appender引用其他appender,并不是所以appender類型都支持。filter0個或多個,定義此appender使用的過濾器。layout最多一個。定義appender使用的輸出格式。param0個或多個, 設置Appender類中對應的屬性的值。(2) appender的輸出方式(type屬性)AdoNetAppender將日志記錄到數(shù)據(jù)庫中。可以采用SQL和存儲過程兩種方式。AnsiColorTerminalAppender將日志高亮輸出到ANSI終端。AspNetTraceAppender能用中Trace的方式查看記錄的日志。BufferingForwardingAppender在輸出到子Appenders之前先緩存日志事件。ConsoleAppender將日志輸出到應用程序控制臺。EventLogAppender將日志寫到Windows Event Log。FileAppender將日志輸出到文件。ForwardingAppender發(fā)送日志事件到子Appenders。LocalSyslogAppender將日志寫到local syslog service (僅用于UNIX環(huán)境下)。MemoryAppender將日志存到內(nèi)存緩沖區(qū)。NetSendAppender將日志輸出到Windows Messenger service.這些日志信息將在用戶終端的對話框中顯示。OutputDebugStringAppender將日志輸出到Debuger,如果程序沒有Debuger,就輸出到系統(tǒng)Debuger。如果系統(tǒng)Debuger也不可用,將忽略消息。RemoteSyslogAppender 通過UDP網(wǎng)絡協(xié)議將日志寫到Remote syslog service。RemotingAppender通過.NET Remoting將日志寫到遠程接收端。RollingFileAppender將日志以回滾文件的形式寫到文件中。SmtpAppender將日志寫到郵件中。SmtpPickupDirAppender將消息以文件的方式放入一個目錄中,像IIS SMTP agent這樣的SMTP代理就可以閱讀或發(fā)送它們。TelnetAppender客戶端通過Telnet來接受日志事件。TraceAppender將日志寫到.NET trace 系統(tǒng)。UdpAppender將日志以無連接UDP數(shù)據(jù)報的形式送到遠程宿主或用UdpClient的形式廣播。(3) appender配置使用示例 以回滾文件的形式記錄日志 使用過濾器記錄日志 5. filter節(jié)點配置詳解(1) filter節(jié)點配置filter只能作為的子元素,type屬性表示Filter的類型。常用子元素數(shù)量0個或多個,作用設置一些參數(shù)。(2) filter的類型說明DenyAllFilter阻止所有的日志事件被記錄LevelMatchFilter只有指定等級的日志事件才被記錄LevelRangeFilter日志等級在指定范圍內(nèi)的事件才被記錄LoggerMatchFilterLogger名稱匹配,才記錄PropertyFilter消息匹配指定的屬性值時才被記錄StringMathFilter消息匹配指定的字符串才被記錄MdcFilterNdcFilter(3) filter的工作原理如果想使用LevelMatchFilter過濾器過濾日志信息,我們使用如下的配置: 在控制臺輸出的日志信息如下:此時,我們會覺得很奇怪,為什么所有等級的日志信息都輸出了呢?我們再修改一下配置: 現(xiàn)在,在控制臺輸出的日志信息如下:現(xiàn)在,就得到了我們想要的輸出日志。其實filter的工作原理是這樣的:日志在被過濾器處理時,如果日志信息滿足當前過濾器的過濾條件時,該日志信息就會被輸出記錄,否則日志信息將被傳遞給下一個過濾器做同樣的處理,如果下一個過濾器不存在也會輸出日志信息。(4) filter的使用示例記錄日志等級為“FATAL”和“ERROR”的日志信息: 記錄日志等級范圍從“ERROR”到“INFO”的日志信息: 6. Layout節(jié)點配置詳解(1) layout節(jié)點配置layout節(jié)點只能作為的子元素。type屬性表示Layout的類型。常用子元素數(shù)量0個或多個,作用設置一些參數(shù)。Layout用于控制Appender的輸出格式,可以使線性的也可以使XML。最常用的Layout應該是用戶自定義格式的PatternLayout,其次是SimpleLayout和ExceptionLayout。然后還有4個Layout,其中有兩個是輸出Xml的Layout,但是中文會有問題。ExceptionLayout需要給Logger的方法傳入Exception對象作為參數(shù)才起作用,否則就什么也不輸出。輸出的時候會包含Message和Trace。(2) layout節(jié)點的type屬性取值ExceptionLayout只呈現(xiàn)日志事件中異常的文本信息PatternLayout可以通過類型字符串來配置的布局RawPropertyLayout從日志事件中提取屬性值RawTimeStampLayout從日志事件中提取日期RawUtcTimeStampLayout從日志事件中提取UTC日期SimpleLayout很簡單的布局XmlLayout把日志事件格式化為XML元素的布局(3) PatterLayout的格式化字符串%m、%message輸出的日志消息%d、%datetime輸出當前語句運行的時刻,格式%dateyyyy-MM-dd HH:mm:ss,fff%r、%timestamp輸出程序從運行到執(zhí)行到當前語句時消耗的毫秒數(shù)%p、%level日志的當前優(yōu)先級別%c、%logger當前日志對象的名稱%L、%line輸出語句所在的行號%F、%file輸出語句所在的文件名,警告:只在調(diào)試的時候有效,調(diào)用本地信息會影響性能%a、%appdomain引發(fā)日志事件的應用程序域的名稱。%C、%class、%type引發(fā)日志請求的類的全名,警告:會影響性能%exception異常信息%u、%identity當前活動用戶的名字,我測試的時候%identity返回都是空的。警告:會影響性能%l、%location引發(fā)日志事件的名空間、類名、方法、行號。警告:會影響性能,依賴pdb文件%M、%method發(fā)生日志請求的方法名,警告:會影響性能%n、%newline換行符%x、%ndcNDC(nested diagnostic context)%X、%mdc、%P、%properties等介于 %property%property輸出log4net:Identity=, log4net:UserName=, log4net:HostName= %t、%thread引發(fā)日志事件的線程,如果沒有線程名就使用線程號。%w、%username當前用戶的WindowsIdentity,類似:HostName/Username。警告:會影響性能%utcdate發(fā)生日志事件的UTC時間。例如:%utcdateHH:mm:ss,fff%輸出一個百分號(4) PatterLayout格式修飾符格式修飾符對齊最小寬最大寬說明%20logger右對齊20無如果logger名不足20個字符,就在左邊補空格%-20logger左對齊20無如果logger名不足20個字符,就在右邊補空格%.30logger左對齊無30超過30個字符將截斷%20.30logger右對齊2030logger名要在20到30之間,少了在左邊補空格,多了截斷%-20.30logger左對齊2030logger名要在20到30之間,少了在右邊補空格,多了截斷(5) layout的使用示例 7. 其它節(jié)點的說明與配置(1) param節(jié)點元素可以是如何元素的子元素,包含的屬性:name、value、:必須的,取值是父對象的參數(shù)名。value:可選的,value是一個能被轉(zhuǎn)化為參數(shù)值的字符串。type:可選的,value和type中,必須有一個屬性被指定。type是一個類型名,如果type不是在log4net程序集中定義的,就需要使用全名。param節(jié)點的主要作用是可以代替其他任何節(jié)點,例如: !-可以使用:- !-可以使用:- (2) root節(jié)點root節(jié)點的作用是所有其它logger都默認繼承它。root元素沒有屬性。root節(jié)點的子元素與logger一樣有appender-ref、level、param。使用示例: (3) log4net節(jié)點Log4net節(jié)點是整個日志配置的根節(jié)點,包含的屬性:debug、update、threshold。debug:可選,取值是true或false,默認是false。設置為true,開啟log4net的內(nèi)部調(diào)試。update:可選,取值是Merge(合并)或Overwrite(覆蓋),默認值是Merge。設置為Overwrite,在提交配置的時候會重置已經(jīng)配置過的庫。threshold:可選,取值是repository(庫)中注冊的level,默認值是ALL。Log4net節(jié)點支持的子元素:appender(0或多個)、logger (0或多個)、renderer (0或多個)、root(最多一個)、param(0或多個)。(4) configSections節(jié)點配置log4net需要在configSections節(jié)點中加入

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論