org.apache.Log4j.Level
類定義了日志級別,您可通過繼承 Level
類定制自己的級別。
級別 | 描述 |
---|---|
ALL | 所有級別,包括定制級別。 |
DEBUG | 指明細致的事件信息,對調試應用最有用。 |
ERROR | 指明錯誤事件,但應用可能還能繼續(xù)運行。 |
FATAL | 指明非常嚴重的錯誤事件,可能會導致應用終止執(zhí)行。 |
INFO | 指明描述信息,從粗粒度上描述了應用運行過程。 |
OFF | 最高級別,用于關閉日志。 |
TRACE | 比 DEBUG 級別的粒度更細。 |
WARN | 指明潛在的有害狀況。 |
在一個級別為 q
的 logger 對象中,一個級別為 p
的日志請求在 p >= q 的情況下是開啟的。該規(guī)則是 Log4j 的核心,它假設級別是有序的。對于標準級別,其順序為:ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF。
下面的例子展示了如何過濾 DEBUG 和 INFO 級別的日志。改程序使用 logger 對象的 setLevel(Level.X)
方法設置期望的日志級別:
該例子會打印出除過 DEBUG 和 INFO 級別外的所有信息:
import org.apache.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 提供了基于配置文件設置日志級別的功能,當您需要改變調試級別時,不用再去修改代碼了。
下面這個例子和上面那個例子功能一樣,不過不用使用 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
現(xiàn)在使用如下程序:
import org.apache.Log4j.*;
public class LogClass {
private static 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!