Log4J是Apache的一個開放源代碼項目(http://logging.apache.org/log4j/docs/),它是一個日誌操作包。通過使用Log4J,可以指定日誌信息輸出的目的地,控制每一條日誌的輸出格式,定義日誌信息的級別。所有這些功能通過一個配置文件靈活進行配置。 一、LOG4J組成 LOG4J主要由三大組件組成: 一個Logger可以有多個Appender,也就是說日誌信息可以同時輸出到多個設備上,每個Appender對應 ↗ Appender1 → Layout
1. Logger組件提供的方法: Logger組件是LOG4J的核心組件,它代表了Log4J的日誌記錄器,它能夠對日誌信息進行分類篩選。它由org.apache.log4j.Logger類實現,提供瞭如下方法: java 代碼 1. package org.apache.log4j; 2. 3. public class Logger { 4. 5. // Creation & retrieval methods: 6. public static Logger getRootLogger(); 7. public static Logger getLogger(String name); 8. 9. // printing methods: 10. public void debug(Object message); 11. public void info(Object message); 12. public void warn(Object message); 13. public void error(Object message); 14. public void fatal(Object message); 15. 16. // generic printing method: 17. public void log(Priority p, Object message); 18.} 2. 在配置文件中配置Logger組件 可在Log4J配置文件中配置自己的Logger組件,示例: log4j.logger.myLogger=WARN 以上代碼定義了一個Logger組件,名稱爲myLogger,日誌級別爲WARN。
一共有五種,級別由高到低依次是:fatal、error、warn、info、debug。獲得Logger實例後,我們可調用以下方法之一輸出日誌信息: public void debug(Object message); //輸出debug級別的日誌信息; 以上方法只有當它的級別大於或等於Logger組件配置的日誌級別時才調用。以前面我們配置的myLogger爲例,它的日誌級別爲WARN, 那麼在程序中,它的warn()、error()、fatal()方法會被執行。對於log()方法,只有當它的參數Priority指定的日誌級別大於或等於WARN時,它纔會被執行。 4. 爲什麼需要對日誌進行分級? 5. Logger組件的繼承性 Log4J提供了一個root Logger,它是所有Logger組件的“祖先”,它永遠存在,且不能通過名字檢索或引用,通過Logger.getRootLogger()方法取得它。配置root Logger代碼: log4j.rootLogger=INFO,console 可在配置文件中方便地配置存在繼承關係的Logger組件,凡是在符號“.”後面的組件都會成爲在符號“.”前面的Logger組件的子類。例如: log4j.apache.myLogger=WARN 以上代碼中, mySonLogger是myLogger的子類Logger組件。Logger組件的繼承關係: 以上配置的三個Logger繼承關係示例如圖: 這三個Logger組件實際日誌級別和Appender如下表: Logger組件 日誌級別 Appender清單 Appender組件決定將日誌信息輸出到什麼地方。支持以下目的地: 一個Logger可同時對應多個Appender,示例:myLogger配置二個Appender: 一個file, 一個是console: log4j.logger.myAppender=WARN,file,console log4j.appender.file=org.apache.log4j.RollingFileAppender log4j.apender.console=org.apache.log4j.ConsoleAppender 四、Layout組件 Layout組件決定日誌輸出格式,有以下幾種類型: log4j.appender.console.layout=org.apache.log4j.SimpleLayout 輸出日誌格式如下: WARN - This is a log message from the myLogger log4j.appender.file.layout=org.apache.log4j.PatternLayout 輸出日誌格式如下: THREAD-1 WARN - This is a log message from the myLogger PatternLayout讓開發者依照ConversionPattern定義輸出格式。ConversionPattern中一些指定日誌內容和格式的預定義符號說明如下: 符號 描述 |