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

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

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

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論