對這文章發表回應
發表限制: 非會員 可以發表
發表者: 冷日 發表時間: 2017/2/18 3:39:41
Logging 級別
org.apache.Log4j.Level
類定義了日誌級別,您可通過繼承 Level
類定制自己的級別。
級別 | 描述 |
---|---|
ALL | 所有級別,包括定制級別。 |
DEBUG | 指明細緻的事件信息,對調試應用最有用。 |
ERROR | 指明錯誤事件,但應用可能還能繼續運行。 |
FATAL | 指明非常嚴重的錯誤事件,可能會導致應用終止執行。 |
INFO | 指明描述信息,從粗粒度上描述了應用運行過程。 |
OFF | 最高級別,用於關閉日誌。 |
TRACE | 比 DEBUG 級別的粒度更細。 |
WARN | 指明潛在的有害狀況。 |
級別是如何工作的?
在一個級別為 q
的 logger 對像中,一個級別為 p
的日誌請求在 p >= q 的情況下是開啟的。該規則是 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
現在使用如下程序:
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!
原文出處:Logging 级别 - Log4j 教程 - 极客学院Wiki