Log4Net使用詳解

Log4Net使用詳解

1.Log4Net環境的搭建與基本配置

(1)Log4Net框架介紹

     Log4net 是 Apache 下一個開放源碼的項目,它是Log4j 的一個克隆版。我們可以控制日誌信息的輸出目的地。Log4net中定義了多種日誌信息輸出模式。它可以根據需要將日誌輸出到控制檯,文本文件,windows 日誌事件查看器中,包括數據庫,郵件等等位置,以便我們快速跟蹤程序bug。

(2)Log4Net的環境配置以及簡單使用

     程序代碼:

  1. [assembly: log4net.Config.XmlConfigurator(Watch = true)]
  2. namespace APP02
  3. {
  4. class Program
  5. {
  6. static void Main(string[] args)
  7. {
  8. ILog log = log4net.LogManager.GetLogger("Test");
  9. log.Error("錯誤", new Exception("發生了一個異常"));//錯誤
  10. log.Fatal("嚴重錯誤", new Exception("發生了一個致命錯誤"));//嚴重錯誤
  11. log.Info("信息"); //記錄一般信息
  12. log.Debug("調試信息");//記錄調試信息
  13. log.Warn("警告");//記錄警告信息
  14. Console.WriteLine("日誌記錄完畢。");
  15. Console.Read();
  16. }
  17. }
  18. }

     App.config文件配置:

  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <configuration>
  3. <configSections>
  4. <section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
  5. </configSections>
  6. <log4net>
  7. <appender name="控制檯輸出" type="log4net.Appender.ConsoleAppender">
  8. <layout type="log4net.Layout.PatternLayout">
  9. <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
  10. </layout>
  11. </appender>
  12. <logger name="Test">
  13. <level value="ALL"/>
  14. <appender-ref ref="控制檯輸出" />
  15. </logger>
  16. </log4net>
  17. </configuration>

     運行結果:

2.Log4Net結構

(1)Log4Net核心組件

     Log4net主要分爲5個核心組件: Logger, Appender, Filter, Layout, Object Render。

(2)Logger介紹

     Logger是負責日誌的記錄者,假設我們需要記錄一些正常的運行時日誌和出現異常時的錯誤日誌,那麼我們可以通過在配置文件當中添加兩個Logger實現。Logger主要用於記錄日誌的分類和控制日誌的級別。它可以以多種格式輸出日誌信息,同時它也可以控制日誌的輸出級別。

     log4net使用繼承體系,也就是說假如存在兩個Logger,名字分別爲a.b.c和a.b。那麼a.b就是a.b.c的祖先。每個Logger都繼承了它祖先的屬性。

(3)Appender介紹

     Appender提供記錄的介質,我們可能要將日誌輸出到控制檯,文本文件,windows 日誌事件查看器中,包括數據庫,郵件等等位置。我們可以通過Appender配置實現,而且Log4Net當中已經默認提供了一些常用的Appender,我們可以簡單地修改一些配置文件就實現同時向數據庫和同時向文件中寫入的功能。

(4)Filter介紹

     Filter就是過濾器,使用過濾器可以過濾掉Appender輸出的部分內容,只輸出感興趣的日誌。

(5)Layout介紹

     Layout用於控制Appender的輸出格式,可以使線性的也可以使XML。一個Appender只能有一個Layout配置。

(6)Object Render介紹

     Object Render將告訴logger如何把一個對象轉化爲一個字符串記錄到日誌裏。ILog中定義的記錄日誌的方法接收的參數是Object,而不是String。

     例如你想把Orange對象記錄到日誌中,但此時logger只會調用Orange默認的ToString方法而已。所以要定義一個OrangeRender類實現log4net.ObjectRender.IObjectRender接口,然後註冊它。這時logger就會知道如何把Orange記錄到日誌中了。

3.logger節點配置詳解

(1)logger節點配置

     logger節點支持的屬性:name、additivity。

name        必須的,logger的名稱,在代碼中得到ILog對象時用到。

additivity  可選,取值是true或false,默認值是true。設置爲false時將阻止父logger中的appender。

     logger支持的子元素:level、appender-ref、param。

level           最多一個。在這個級別或之上的纔會被記錄。OFF、FATAL、ERROR、WARN 、INFO、DEBUG、ALL

appender-ref    0個或多個,要引用的appender的名字。

param           0個或多個,設置一些參數。

(2)日誌級別等級

     高到底分別爲: OFF > FATAL > ERROR > WARN > INFO > DEBUG  > ALL

(3)ILog對象說明

     ILog是實現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靜態方法,可以獲得配置文件中相應的Logger,代碼如下:

          ILog log = LogManager .GetLogger( "logger-name" )

(4)logger配置使用示例

     使用多個appender同事到控制檯與文件中輸出日誌

  1. <log4net>
  2. <logger additivity="true" name="Test">
  3. <level value="ALL"/>
  4. <appender-ref ref="控制檯輸出"/>
  5. <appender-ref ref="文件輸出"/>
  6. </logger>
  7. <appender name="控制檯輸出" type="log4net.Appender.ConsoleAppender">
  8. <layout type="log4net.Layout.PatternLayout">
  9. <param name="ConversionPattern" value="%d %-5p %m %exception %n" />
  10. </layout>
  11. </appender>
  12. <appender name="文件輸出" type="log4net.Appender.FileAppender">
  13. <param name="File" value="F:log-file.txt" />
  14. <layout type="log4net.Layout.PatternLayout">
  15. <param name="ConversionPattern" value="%d %-5p %m %exception %n" />
  16. </layout>
  17. </appender>
  18. </log4net>

     使用logger的繼承機制

  1. <log4net xmlns="urn:log4net">
  2. <logger xmlns="" name="Base">
  3. <appender-ref ref="文件輸出"/>
  4. </logger>
  5. <logger xmlns="" name="Base.Test"><!-- 繼承Base-->
  6. <level value="ALL"/>
  7. <appender-ref ref="控制檯輸出"/>
  8. </logger>
  9. <appender xmlns="" name="控制檯輸出" type="log4net.Appender.ConsoleAppender">
  10. <layout type="log4net.Layout.PatternLayout">
  11. <param name="ConversionPattern" value="%d %-5p %m %exception %n" />
  12. </layout>
  13. </appender>
  14. <appender xmlns="" name="文件輸出" type="log4net.Appender.FileAppender">
  15. <param name="File" value="F:log-file.txt" />
  16. <layout type="log4net.Layout.PatternLayout">
  17. <param name="ConversionPattern" value="%d %-5p %m %exception %n" />
  18. </layout>
  19. </appender>
  20. </log4net>

4.appender節點配置詳解

(1)appender節點配置

     支持的屬性:name、type(name屬性必須唯一,type屬性必須指定)。

name    必須的,appender對象的名稱

type    必須的,appender對象的輸出類型

     常用的子元素:appender-ref、filter、layout、param

appender-ref    0個或多個,允許此appender引用其他appender,並不是所以appender類型都支持。

filter          0個或多個,定義此appender使用的過濾器。

layout          最多一個。定義appender使用的輸出格式。

param           0個或多個, 設置Appender類中對應的屬性的值。

(2)appender的輸出方式(type屬性)

AdoNetAppender              將日誌記錄到數據庫中。可以採用SQL和存儲過程兩種方式。

AnsiColorTerminalAppender   將日誌高亮輸出到ANSI終端。

AspNetTraceAppender         能用asp.net中Trace的方式查看記錄的日誌。

BufferingForwardingAppender 在輸出到子Appenders之前先緩存日誌事件。

ConsoleAppender             將日誌輸出到應用程序控制臺。

EventLogAppender            將日誌寫到Windows Event Log。

FileAppender                將日誌輸出到文件。

ForwardingAppender          發送日誌事件到子Appenders。

LocalSyslogAppender         將日誌寫到local syslog service (僅用於UNIX環境下)。

MemoryAppender              將日誌存到內存緩衝區。

NetSendAppender             將日誌輸出到Windows Messenger service.這些日誌信息將在用戶終端的對話框中顯示。

OutputDebugStringAppender   將日誌輸出到Debuger,如果程序沒有Debuger,就輸出到系統Debuger。如果系統Debuger也不可用,將忽略消息。

RemoteSyslogAppender        通過UDP網絡協議將日誌寫到Remote syslog service。

RemotingAppender            通過.NET Remoting將日誌寫到遠程接收端。

RollingFileAppender         將日誌以回滾文件的形式寫到文件中。

SmtpAppender                將日誌寫到郵件中。

SmtpPickupDirAppender       將消息以文件的方式放入一個目錄中,像IIS SMTP agent這樣的SMTP代理就可以閱讀或發送它們。

TelnetAppender              客戶端通過Telnet來接受日誌事件。

TraceAppender               將日誌寫到.NET trace 系統。

UdpAppender                 將日誌以無連接UDP數據報的形式送到遠程宿主或用UdpClient的形式廣播。

(3)appender配置使用示例

     以回滾文件的形式記錄日誌

  1. <appender name="文件輸出" type="log4net.Appender.RollingFileAppender">
  2. <file value="F:\log\Log.txt" />
  3. <appendToFile value="true" />
  4. <rollingStyle value="Size" />
  5. <maxSizeRollBackups value="10" />
  6. <maximumFileSize value="5MB" />
  7. <staticLogFileName value="true" />
  8. <layout type="log4net.Layout.PatternLayout">
  9. <param name="ConversionPattern" value="%d %-5p %m %exception %n" />
  10. </layout>
  11. </appender>

     使用過濾器記錄日誌

  1. <appender name="控制檯輸出" type="log4net.Appender.ConsoleAppender">
  2. <layout type="log4net.Layout.PatternLayout">
  3. <param name="ConversionPattern" value="%d %-5p %m %exception %n" />
  4. </layout>
  5. <filter type="log4net.Filter.LevelMatchFilter">
  6. <levelToMatch value="FATAL"/>
  7. </filter>
  8. <filter type="log4net.Filter.DenyAllFilter" />
  9. </appender>

5.filter節點配置詳解

(1)filter節點配置

     filter只能作爲<appender>的子元素,type屬性表示Filter的類型。常用子元素<param>數量0個或多個,作用設置一些參數。

(2)filter的類型說明

DenyAllFilter       阻止所有的日誌事件被記錄

LevelMatchFilter    只有指定等級的日誌事件才被記錄

LevelRangeFilter    日誌等級在指定範圍內的事件才被記錄

LoggerMatchFilter   Logger名稱匹配,才記錄

PropertyFilter      消息匹配指定的屬性值時才被記錄

StringMathFilter    消息匹配指定的字符串才被記錄

MdcFilter

NdcFilter

(3)filter的工作原理

     如果想使用LevelMatchFilter過濾器過濾日誌信息,我們使用如下的配置:

  1. <appender xmlns="" name="測試輸出" type="log4net.Appender.ConsoleAppender">
  2. <layout type="log4net.Layout.PatternLayout">
  3. <param name="ConversionPattern" value="%d %-5p %m %exception %n" />
  4. </layout>
  5. <filter type="log4net.Filter.LevelMatchFilter">
  6. <levelToMatch value="FATAL"/><!--只記錄等級爲“FATAL”的日誌信息-->
  7. </filter>
  8. </appender>

     在控制檯輸出的日誌信息如下:

     此時,我們會覺得很奇怪,爲什麼所有等級的日誌信息都輸出了呢?我們再修改一下配置:

  1. <appender xmlns="" name="測試輸出" type="log4net.Appender.ConsoleAppender">
  2. <layout type="log4net.Layout.PatternLayout">
  3. <param name="ConversionPattern" value="%d %-5p %m %exception %n" />
  4. </layout>
  5. <filter type="log4net.Filter.LevelMatchFilter">
  6. <levelToMatch value="FATAL"/><!--只記錄等級爲“FATAL”的日誌信息-->
  7. </filter>
  8. <filter type="log4net.Filter.DenyAllFilter"/><!--在最後增加這個過濾器-->
  9. </appender>

     現在,在控制檯輸出的日誌信息如下:

     現在,就得到了我們想要的輸出日誌。 其實filter的工作原理是這樣的:日誌在被過濾器處理時,如果日誌信息滿足當前過濾器的過濾條件時,該日誌信息就會被輸出記錄,否則日誌信息將被傳遞給下一個過濾器做同樣的處理,如果下一個過濾器不存在也會輸出日誌信息。

(4)filter的使用示例

     記錄日誌等級爲“FATAL”和“ERROR”的日誌信息:

  1. <filter type="log4net.Filter.LevelMatchFilter">
  2. <levelToMatch value="FATAL"/>
  3. </filter>
  4. <filter type="log4net.Filter.LevelMatchFilter">
  5. <levelToMatch value="ERROR"/>
  6. </filter>
  7. <filter type="log4net.Filter.DenyAllFilter"/>

     記錄日誌等級範圍從“ERROR”到“INFO”的日誌信息:

  1. <filter type="log4net.Filter.LevelRangeFilter">
  2. <levelMax value="ERROR"/>
  3. <levelMin value="INFO"/>
  4. </filter>
  5. <filter type="log4net.Filter.DenyAllFilter"/><!--不加這個過濾器也可以-->

6.Layout節點配置詳解

(1)layout節點配置

     layout節點只能作爲<appender>的子元素。type屬性表示Layout的類型。常用子元素<param>數量0個或多個,作用設置一些參數。

     Layout用於控制Appender的輸出格式,可以使線性的也可以使XML。最常用的Layout應該是用戶自定義格式的PatternLayout,其次是SimpleLayout和ExceptionLayout。然後還有4個Layout,其中有兩個是輸出Xml的Layout,但是中文會有問題。ExceptionLayout需要給Logger的方法傳入Exception對象作爲參數才起作用,否則就什麼也不輸出。輸出的時候會包含Message和Trace。

(2)layout節點的type屬性取值

ExceptionLayout         只呈現日誌事件中異常的文本信息

PatternLayout           可以通過類型字符串來配置的佈局

RawPropertyLayout       從日誌事件中提取屬性值

RawTimeStampLayout      從日誌事件中提取日期

RawUtcTimeStampLayout   從日誌事件中提取UTC日期

SimpleLayout            很簡單的佈局

XmlLayout               把日誌事件格式化爲XML元素的佈局

(3)PatterLayout的格式化字符串

%m、%message         輸出的日誌消息

%d、%datetime        輸出當前語句運行的時刻,格式%date{yyyy-MM-dd HH:mm:ss,fff}

%r、%timestamp       輸出程序從運行到執行到當前語句時消耗的毫秒數

%p、%level           日誌的當前優先級別

%c、%logger          當前日誌對象的名稱

%L、%line            輸出語句所在的行號

%F、%file            輸出語句所在的文件名,警告:只在調試的時候有效,調用本地信息會影響性能

%a、%appdomain       引發日誌事件的應用程序域的名稱。

%C、%class、%type    引發日誌請求的類的全名,警告:會影響性能

%exception           異常信息

%u、%identity        當前活動用戶的名字,我測試的時候%identity返回都是空的。警告:會影響性能

%l、%location        引發日誌事件的名空間、類名、方法、行號。警告:會影響性能,依賴pdb文件

%M、%method          發生日誌請求的方法名,警告:會影響性能

%n、%newline         換行符

%x、%ndc             NDC(nested diagnostic context)

%X、%mdc、%P、%properties  等介於 %property

%property           輸出{log4net:Identity=, log4net:UserName=, log4net:HostName=} 

%t、%thread         引發日誌事件的線程,如果沒有線程名就使用線程號。

%w、%username       當前用戶的WindowsIdentity,類似:HostName/Username。警告:會影響性能

%utcdate            發生日誌事件的UTC時間。例如:%utcdate{HH:mm:ss,fff}

%%                  輸出一個百分號

(4)PatterLayout格式修飾符

    格式修飾符       對齊      最小寬最大寬     說明

%20logger       右對齊     20        無     如果logger名不足20個字符,就在左邊補空格

%-20logger      左對齊     20        無     如果logger名不足20個字符,就在右邊補空格

%.30logger      左對齊     無        30     超過30個字符將截斷

%20.30logger    右對齊     20        30     logger名要在20到30之間,少了在左邊補空格,多了截斷

%-20.30logger   左對齊     20        30     logger名要在20到30之間,少了在右邊補空格,多了截斷

(5)layout的使用示例

  1. <layout type="log4net.Layout.PatternLayout">
  2. <conversionPattern value="%d [%t] %-5p %c [%x] - %m%n"/>
  3. </layout>

7.其它節點的說明與配置

(1)param節點

     <param>元素可以是如何元素的子元素,包含的屬性:name、value、type。name:必須的,取值是父對象的參數名。value:可選的,value是一個能被轉化爲參數值的字符串。type:可選的,value和type中,必須有一個屬性被指定。type是一個類型名,如果type不是在log4net程序集中定義的,就需要使用全名。

     param節點的主要作用是可以代替其他任何節點,例如:

  1. <layout type="log4net.Layout.PatternLayout">
  2. <conversionPattern value="%5p %n"/>
  3. <!--可以使用:<param name="ConversionPattern" value="%5p %n"/>-->
  4. </layout>
  5. <filter type="log4net.Filter.LevelMatchFilter">
  6. <levelToMatch value="FATAL"/>
  7. <!--可以使用:<param name="LevelToMatch" value="FATAL"/>-->
  8. </filter>
  9. <filter type="log4net.Filter.DenyAllFilter" />

(2)root節點

     root節點的作用是所有其它logger都默認繼承它。root元素沒有屬性。root節點的子元素與logger一樣有appender-ref、level、param。

     使用示例:

  1. <root xmlns="">
  2. <level value="WARN" />
  3. <appender-ref ref="LogFileAppender" />
  4. <appender-ref ref="ConsoleAppender" />
  5. </root>

(3)log4net節點

     Log4net節點是整個日誌配置的根節點,包含的屬性:debug、update、threshold。debug:可選,取值是true或false,默認是false。設置爲true,開啓log4net的內部調試。update:可選,取值是Merge(合併)或Overwrite(覆蓋),默認值是Merge。設置爲Overwrite,在提交配置的時候會重置已經配置過的庫。threshold:可選,取值是repository(庫)中註冊的level,默認值是ALL。

     Log4net節點支持的子元素:appender(0或多個)、logger (0或多個)、renderer (0或多個)、root(最多一個)、param(0或多個)。

(4)configSections節點

     配置log4net需要在configSections節點中加入節點section,例如:

  1. <configSections>
  2. <section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
  3. </configSections>

8.配置文件

(1)配置文件結構圖

(2)配置文件示例

  1. <log4net xmlns="urn:log4net">
  2. <root xmlns="">
  3. <level value="FATAL"/>
  4. <appender-ref ref="控制檯輸出"/>
  5. </root>
  6. <logger xmlns="" name="Test">
  7. <level value="ALL"/>
  8. <appender-ref ref="控制檯輸出"/>
  9. </logger>
  10. <logger xmlns="" name="Test.lzw" additivity="false">
  11. <level value="WARN"/>
  12. <appender-ref ref="文件輸出"/>
  13. </logger>
  14. <appender xmlns="" name="控制檯輸出" type="log4net.Appender.ConsoleAppender">
  15. <layout type="log4net.Layout.PatternLayout">
  16. <conversionPattern value="%5p %n"/>
  17. </layout>
  18. <filter type="log4net.Filter.LevelMatchFilter">
  19. <levelToMatch value="FATAL"/>
  20. </filter>
  21. <filter type="log4net.Filter.DenyAllFilter" />
  22. </appender>
  23. <appender xmlns="" name="文件輸出" type="log4net.Appender.FileAppender">
  24. <file value="F:\ServerLog.txt" />
  25. <appendToFile value="false"/>
  26. <layout type="log4net.Layout.PatternLayout">
  27. <param name="ConversionPattern" value="%property %n" />
  28. </layout>
  29. </appender>
  30. </log4net>

(3)關聯配置文件

     log4net默認關聯的是應用程序的配置文件App.config或Web.config,可以使用程序集自定義屬性來進行設置。下面來介紹一下這個自定義屬性:log4net.Config.XmlConifguratorAttribute。

     XmlConfiguratorAttribute有3個屬性:ConfigFile、ConfigFileExtension、Watch。

     ConfigFile:配置文件的名字,文件路徑相對於應用程序目錄。ConfigFileExtension:配置文件的擴展名,文件路徑相對於應用程序的目錄,不能和ConfigFile屬性一起使用。Watch:如果將Watch屬性設置爲true,就會監視配置文件,當配置文件發生變化的時候,就會重新加載。例如:

     // 監視默認的配置文件, App.exe.config 

     [ assembly : log4net.Config. XmlConfigurator (Watch = true )]

          // 配置文件: App.exe.log4net

     [ assembly : log4net.Config. XmlConfigurator (ConfigFileExtension = "log4net" )]

          // 配置文件: log4net.config

     [ assembly : log4net.Config. XmlConfigurator (ConfigFile = "log4net.config" )]

也可以在 Global.asax  Application_Start 裏或者是 Program.cs 中的 Main方法中添加,注意這裏一定是絕對路徑,如下所示:

          log4net.Config. XmlConfigurator .Configure( new FileInfo ( @"F:/log4net.config" ));

(4)Log4j的配置文件例子

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
  3. <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
  4. <!--
  5. 根節點的配置順序:
  6. renderer
  7. appender
  8. plugin
  9. logger
  10. category
  11. root
  12. loggerfactory
  13. categoryfactory
  14. -->
  15. <!-- ========================================================================================= -->
  16. <!--
  17. org.apache.log4j.ConsoleAppender 控制檯輸出
  18. org.apache.log4j.FileAppender 文件日誌輸出
  19. org.apache.log4j.DailyRollingFileAppender 每個時間段產生一個日誌文件
  20. org.apache.log4j.RollingFileAppender 文件大小到達指定尺寸的時候產生一個新的文件
  21. org.apache.log4j.WriterAppender 將日誌信息以流格式發送到任意指定的地方
  22. org.apache.log4j.net.SMTPAppender 發郵件輸出日誌
  23. org.apache.log4j.net.SocketAppender Socket日誌
  24. org.apache.log4j.nt.NTEventLogAppender Window NT日誌
  25. org.apache.log4j.net.SyslogAppender
  26. org.apache.log4j.net.JMSAppender
  27. org.apache.log4j.AsyncAppender
  28. org.apache.log4j.varia.NullAppender
  29. org.apache.log4j.jdbc.JDBCAppender
  30. -->
  31. <!-- ========================================================================================= -->
  32. <!--
  33. 控制檯輸出:org.apache.log4j.ConsoleAppender
  34. Threshold=WARN 指定日誌消息的輸出最低層次。
  35. ImmediateFlush=true 默認值是 true,意謂着所有的消息都會被立即輸出。
  36. Target=System.err 默認情況下是:System.out,指定輸出控制檯
  37. -->
  38. <appender name="Console" class="org.apache.log4j.ConsoleAppender">
  39. <param name="Threshold" value="ALL"></param>
  40. <param name="ImmediateFlush" value="true"></param>
  41. <param name="Target" value="System.out"></param>
  42. <layout class="org.apache.log4j.TTCCLayout" />
  43. </appender>
  44. <!-- ========================================================================================= -->
  45. <!--
  46. 文件日誌輸出:org.apache.log4j.FileAppender
  47. Threshold=WARN 指定日誌消息的輸出最低層次。
  48. ImmediateFlush=true 默認值是 true,意謂着所有的消息都會被立即輸出。
  49. File=mylog.txt 指定消息輸出到 mylog.txt 文件。
  50. Append=false 默認值是 true,即將消息增加到指定文件中,false 指將消息覆蓋指定的文件內容。
  51. -->
  52. <appender name="File" class="org.apache.log4j.FileAppender">
  53. <param name="Threshold" value="ALL"></param>
  54. <param name="ImmediateFlush" value="true"></param>
  55. <param name="File" value="F:\\FileAppender.txt"></param>
  56. <param name="Append" value="false"></param>
  57. <layout class="org.apache.log4j.TTCCLayout" />
  58. </appender>
  59. <!-- ========================================================================================= -->
  60. <!--
  61. 每個時間段產生一個日誌文件:org.apache.log4j.DailyRollingFileAppender
  62. Threshold=WARN 指定日誌消息的輸出最低層次。
  63. ImmediateFlush=true 默認值是 true,意謂着所有的消息都會被立即輸出。
  64. File=mylog.txt 指定消息輸出到 mylog.txt 文件。
  65. Append=false 默認值是 true,即將消息增加到指定文件中,false 指將消息覆蓋指定的文件內容。
  66. DatePattern=.yyyy-ww 每週滾動一次文件,即每週產生一個新的文件。
  67. 當然也可以指定按月、周、天、時和分。即對應的格式如下:
  68. .yyyy-MM 每月
  69. .yyyy-ww 每週
  70. .yyyy-MM-dd 每天
  71. .yyyy-MM-dd-a 每天兩次
  72. .yyyy-MM-dd-HH 每小時
  73. .yyyy-MM-dd-HH-mm 每分鐘
  74. -->
  75. <appender name="DailyRollingFile" class="org.apache.log4j.DailyRollingFileAppender">
  76. <param name="Threshold" value="ALL"></param>
  77. <param name="ImmediateFlush" value="true"></param>
  78. <param name="File" value="F:\\DailyRollingFileAppender.txt"></param>
  79. <param name="Append" value="false"></param>
  80. <param name="DatePattern" value=".yyyy-MM-dd-HH-mm"></param>
  81. <layout class="org.apache.log4j.TTCCLayout" />
  82. </appender>
  83. <!-- ========================================================================================= -->
  84. <!--
  85. 文件大小到達指定尺寸的時候產生一個新的文件:org.apache.log4j.RollingFileAppender
  86. Threshold=WARN 指定日誌消息的輸出最低層次。
  87. ImmediateFlush=true 默認值是 true,意謂着所有的消息都會被立即輸出。
  88. File=mylog.txt 指定消息輸出到 mylog.txt 文件。
  89. Append=false 默認值是 true,即將消息增加到指定文件中,false 指將消息覆蓋指定的文件內容。
  90. MaxFileSize=100KB 後綴可以是 KB, MB 或者是 GB. 在日誌文件到達該大小時,將會自動滾動,即將原來的內容移到 mylog.log.1 文件。
  91. MaxBackupIndex=2 指定可以產生的滾動文件的最大數。
  92. -->
  93. <appender name="RollingFile" class="org.apache.log4j.RollingFileAppender">
  94. <param name="Threshold" value="ALL"></param>
  95. <param name="ImmediateFlush" value="true"></param>
  96. <param name="File" value="F:\\RollingFileAppender.txt"></param>
  97. <param name="Append" value="false"></param>
  98. <param name="MaxFileSize" value="1KB"></param>
  99. <param name="MaxBackupIndex" value="3"></param>
  100. <layout class="org.apache.log4j.TTCCLayout" />
  101. </appender>
  102. <!-- ========================================================================================= -->
  103. <!-- ========================================================================================= -->
  104. <!--
  105. org.apache.log4j.HTMLLayout 以HTML表格形式佈局
  106. org.apache.log4j.PatternLayout 可以靈活地指定佈局模式
  107. org.apache.log4j.xml.XMLLayout XML文件佈局日誌
  108. org.apache.log4j.SimpleLayout 包含日誌信息的級別和信息字符串
  109. org.apache.log4j.TTCCLayout 包含日誌產生的時間、線程、類別等等信息
  110. -->
  111. <!-- ========================================================================================= -->
  112. <!--
  113. 以HTML表格形式佈局:org.apache.log4j.HTMLLayout
  114. LocationInfo=true 默認值是false,輸出java文件名稱和行號
  115. Title=日誌信息 默認值是"Log4J Log Messages"
  116. -->
  117. <appender name="HTML" class="org.apache.log4j.ConsoleAppender">
  118. <layout class="org.apache.log4j.HTMLLayout">
  119. <param name="LocationInfo" value="true"></param>
  120. <param name="Title" value="日誌信息"></param>
  121. </layout>
  122. </appender>
  123. <!-- ========================================================================================= -->
  124. <!--
  125. 可以靈活地指定佈局模式:org.apache.log4j.PatternLayout
  126. ConversionPattern=%m%n 指定怎樣格式化指定的消息,如:%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n
  127. -->
  128. <appender name="Pattern" class="org.apache.log4j.ConsoleAppender">
  129. <layout class="org.apache.log4j.PatternLayout">
  130. <param name="ConversionPattern" value="級別:[%-6p] 時間:[%d{yyy-MMM-dd HH:mm:ss,SSS}] %-50l %m%n"></param>
  131. </layout>
  132. </appender>
  133. <!-- ========================================================================================= -->
  134. <!--
  135. XML文件佈局日誌:org.apache.log4j.xml.XMLLayout
  136. LocationInfo=true 默認值是 false,輸出 java 文件和行號
  137. -->
  138. <appender name="XML" class="org.apache.log4j.ConsoleAppender">
  139. <layout class="org.apache.log4j.xml.XMLLayout">
  140. <param name="LocationInfo" value="true"></param>
  141. </layout>
  142. </appender>
  143. <!-- ========================================================================================= -->
  144. <!-- ========================================================================================= -->
  145. <logger name="ConsoleLog" additivity="false">
  146. <level value="WARN" />
  147. <appender-ref ref="Console" />
  148. </logger>
  149. <logger name="FileLog" additivity="false">
  150. <level value="WARN" />
  151. <appender-ref ref="File" />
  152. </logger>
  153. <logger name="DailyRollingFileLog" additivity="false">
  154. <level value="WARN" />
  155. <appender-ref ref="DailyRollingFile" />
  156. </logger>
  157. <logger name="RollingFileLog" additivity="false">
  158. <level value="WARN" />
  159. <appender-ref ref="RollingFile" />
  160. </logger>
  161. <logger name="HTMLLog" additivity="false">
  162. <level value="WARN" />
  163. <appender-ref ref="HTML" />
  164. </logger>
  165. <logger name="PatternLog" additivity="false">
  166. <level value="WARN" />
  167. <appender-ref ref="Pattern" />
  168. </logger>
  169. <logger name="XMLLog" additivity="false">
  170. <level value="WARN" />
  171. <appender-ref ref="XML" />
  172. </logger>
  173. <!-- ========================================================================================= -->
  174. <!--
  175. 優先級:ALL < DEBUG < INFO <WARN < ERROR < FATAL < OFF
  176. -->
  177. <root>
  178. <priority value="ALL" />
  179. <appender-ref ref="Console" />
  180. </root>
  181. </log4j:configuration>


http://www.tuicool.com/articles/FrYfQvb
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章