1. 程式人生 > >Log4j的日誌輸出級別和配置檔案詳解

Log4j的日誌輸出級別和配置檔案詳解

一,Log4j的日誌輸出級別

    Log4j由三個重要的元件構成:日誌資訊的優先順序,日誌資訊的輸出目的地,日誌資訊的輸出格式。日誌資訊的優先順序從高到低有ERROR、WARN、
INFO、DEBUG,分別用來指定這條日誌資訊的重要程度;日誌資訊的輸出目的地指定了日誌將列印到控制檯還是檔案中;而輸出格式則控制了日誌信

息的顯示內容。

ALL 各級包括自定義級別 
DEBUG 指定細粒度資訊事件是最有用的應用程式除錯 
ERROR 錯誤事件可能仍然允許應用程式繼續執行 
FATAL 指定非常嚴重的錯誤事件,這可能導致應用程式中止 
INFO 指定能夠突出在粗粒度級別的應用程式執行情況的資訊的訊息 
OFF 這是最高等級,為了關閉日誌記錄 
TRACE 指定細粒度比DEBUG更低的資訊事件 
WARN 指定具有潛在危害的情況 

    級別p的級別使用q,在記錄日誌請求時,如果p>=q啟用。這條規則是log4j的核心。它假設級別是有序的。對於標準級別它們關係如下:
ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF。

驗證Log4j的規則:

public class LogClass {
   private static org.apache.log4j.Logger log = Logger
                                    .getLogger(LogClass.class);
   public static void main(String[] args) {
      log.setLevel(Level.WARN);

      log.trace("Trace Message!");
      log.debug("Debug Message!");
      log.info("Info Message!");
      log.warn("Warn Message!");
      log.error("Error Message!");
      log.fatal("Fatal Message!");
   }
}

當編譯並執行LogClass程式會產生以下結果:
Warn Message!
Error Message!
Fatal Message!

二,Log4j.properties配置檔案詳解

1,log4j.rootLogger=DEBUG,console,FILE
log4j.rootLogger用來配置日誌輸出的優先順序和日誌輸出的目的地。第一個欄位DEBUG指定優先順序,只能指定一個欄位。第二個欄位和第三個欄位,
用來指定日誌輸出的目的地。console代表輸出到控制檯,FILE代表輸出到檔案。如果只有一個輸出目的地,我們也可以只指定一個欄位。

2,log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console用來配置具體的類,這裡的console就是我們在上面定義的log4j.rootLogger=DEBUG,console,FILE

3,log4j.appender.console.threshold=INFO
threshold是個全域性的過濾器,把低於所設定的level的資訊過濾掉,不顯示出來。

4,log4j.appender.console.layout=org.apache.log4j.PatternLayout
指定佈局樣式,Log4j具有以下幾種型別的佈局Layout
PatternLayout:根據指定的轉換模式格式化日誌輸出
HTMLLayout:格式化日誌輸出為HTML表格
XMLLayout:格式化日誌輸出為XML檔案
SimpleLayout:以一種非常簡單的方式格式化日誌輸出
TTCCLayout:包含日誌產生的時間、執行緒、類別等資訊

5,log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%5p] - %c -%F(%L) -%m%n
設定日誌的佈局格式

6,log4j.appender.FILE=org.apache.log4j.RollingFileAppender
輸出到檔案
org.apache.log4j.ConsoleAppender(輸出日誌到控制檯)
org.apache.log4j.FileAppender(輸出日誌到檔案)
org.apache.log4j.DailyRollingFileAppender(輸出日誌到檔案,且每天產生一個日誌檔案)
org.apache.log4j.RollingFileAppender(輸出日誌到檔案,且檔案大小到達指定尺寸的時候產生一個新的檔案)
org.apache.log4j.WriterAppender(將日誌資訊以流格式傳送到任意指定的地方)

ConsoleAppender選項:
Threshold=WARN:指定日誌資訊的最低輸出級別,預設為DEBUG。
ImmediateFlush=true:表示所有訊息都會被立即輸出,設為false則不輸出,預設值是true。
Target=System.err:預設值是System.out。

FileAppender選項:
Threshold=WARN:指定日誌資訊的最低輸出級別,預設為DEBUG。
ImmediateFlush=true:表示所有訊息都會被立即輸出,設為false則不輸出,預設值是true。
Append=false:true表示訊息增加到指定檔案中,false則將訊息覆蓋指定的檔案內容,預設值是true。
File=D:/logs/logging.log4j:指定訊息輸出到logging.log4j檔案中。

DailyRollingFileAppender選項:
Threshold=WARN:指定日誌資訊的最低輸出級別,預設為DEBUG。
ImmediateFlush=true:表示所有訊息都會被立即輸出,設為false則不輸出,預設值是true。
Append=false:true表示訊息增加到指定檔案中,false則將訊息覆蓋指定的檔案內容,預設值是true。
File=D:/logs/logging.log4j:指定當前訊息輸出到logging.log4j檔案中。
DatePattern='.'yyyy-MM:每月滾動一次日誌檔案,即每月產生一個新的日誌檔案。當前月的日誌檔名為logging.log4j,前一個月的日誌
檔名logging.log4j.yyyy-MM。
另外,也可以指定按周、天、時、分等來滾動日誌檔案,對應的格式如下:
1)'.'yyyy-MM:每月
2)'.'yyyy-ww:每週
3)'.'yyyy-MM-dd:每天
4)'.'yyyy-MM-dd-a:每天兩次
5)'.'yyyy-MM-dd-HH:每小時
6)'.'yyyy-MM-dd-HH-mm:每分鐘

RollingFileAppender選項:
Threshold=WARN:指定日誌資訊的最低輸出級別,預設為DEBUG。
ImmediateFlush=true:表示所有訊息都會被立即輸出,設為false則不輸出,預設值是true。
Append=false:true表示訊息增加到指定檔案中,false則將訊息覆蓋指定的檔案內容,預設值是true。
File=D:/logs/logging.log4j:指定訊息輸出到logging.log4j檔案中。
MaxFileSize=100KB:字尾可以是KB, MB 或者GB。在日誌檔案到達該大小時,將會自動滾動,即將原來的內容移到logging.log4j.1檔案中。
MaxBackupIndex=2:指定可以產生的滾動檔案的最大數,例如,設為2則可以產生logging.log4j.1,logging.log4j.2兩個滾動檔案
和一個logging.log4j檔案。

7,log4j.appender.FILE.Append=true
是否追加:是

8,log4j.appender.FILE.File=../logs/log4jtest.log
日誌檔案路徑

9,log4j.appender.FILE.MaxFileSize=10MB
設定檔案大小超過10MB以後自動更名,將原來的日誌移動到新的新的檔案中,打包備份。

10,log4j.appender.FILE.MaxBackupIndex=50
設定可以產生的滾動檔案的最大數量,也就是可以產生的備份檔案的最大數量。