說明:Log4j的日志是有級別的,從低到高順序為:ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF,當定義了日志級別為WARN后,那么其比它高的級別(ERROR < FATAL)會打印出來。
基本使用方法:
Log4j由三個重要的組件構成:日志信息的優先級,日志信息的輸出目的地,日志信息的輸出格式。日志信息的優先級從高到低有ERROR、WARN、INFO、DEBUG,分別用來指定這條日志信息的重要程度;日志信息的輸出目的地指定了日志將打印到控制台還是文件中;而輸出格式則控制了日志信息的顯示內容。
日志信息的優先級
org.apache.log4j.Level類提供以下級別,但也可以通過Level類的子類自定義級別。
Level | 描述 |
---|---|
ALL | 各級包括自定義級別 |
DEBUG | 指定細粒度信息事件是最有用的應用程序調試 |
ERROR | 錯誤事件可能仍然允許應用程序繼續運行 |
FATAL | 指定非常嚴重的錯誤事件,這可能導致應用程序中止 |
INFO | 指定能夠突出在粗粒度級別的應用程序運行情況的信息的消息 |
OFF | 這是最高等級,為了關閉日志記錄 |
TRACE | 指定細粒度比DEBUG更低的信息事件 |
WARN | 指定具有潛在危害的情況 |
日志級別是如何工作的?
級別p的級別使用q,在記錄日志請求時,如果p>=q啟用。這條規則是log4j的核心。它假設級別是有序的。對於標准級別它們關系如下:ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF。
下面的例子明確指出如何可以過濾所有的DEBUG和INFO消息。這個程序使用記錄並執行setLevel(Level.X)方法來設置所需的日志記錄級別。
這個例子將打印,除了調試和信息的所有消息:
import org.apache.log4j.*; public class LogClass { private static final 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提供這些可以讓程序員自由更改源代碼,改變調試級別的配置級別是基於文件設置。
以下是上面的例子使用 log.setLevel(Level.WARN)方法的配置文件與上面的例子例子功能一樣。
# Define the root logger with appender file log = /usr/home/log4j log4j.rootLogger = WARN, FILE # Define the file appender log4j.appender.FILE=org.apache.log4j.FileAppender log4j.appender.FILE.File=${log}/log.out # Define the layout for file appender log4j.appender.FILE.layout=org.apache.log4j.PatternLayout log4j.appender.FILE.layout.conversionPattern=%m%n
現在,使用下面的程序:
import org.apache.log4j.*; public class LogClass { private static final org.apache.log4j.Logger log = Logger.getLogger(LogClass.class); public static void main(String[] args) { log.trace("Trace Message!"); log.debug("Debug Message!"); log.info("Info Message!"); log.warn("Warn Message!"); log.error("Error Message!"); log.fatal("Fatal Message!"); } }
現在,編譯和運行上面的程序,得到以下結果在/usr/home/log4j/log.out文件:
Warn Message! Error Message! Fatal Message!
參考:
http://blog.csdn.net/rogger_chen/article/details/50587920
http://www.cnblogs.com/castlehappiness/p/4339813.html(以上內容轉自此篇文章)