1. 程式人生 > >[轉載]log4j輸出日誌級別控制

[轉載]log4j輸出日誌級別控制

ror contain 而在 如何 ogg 設定 一個 需要 net

我們知道:
log4j.logger.XX cover ==> log4j.rootLogger

log4j.appender.XX.Threshold決定了最低接收級別

也就是說rootLogger首先決定所有log的輸出級別,而log4j.logger.XX是對XX路徑下的jar包的輸出級別的修改,直接覆蓋rootLogger

但是對於不同的輸出口,他們的接收級別是不同的。

舉例1:
log4j.appender.XX.Threshold門檻高於log4j.logger.XX時,

log4j.logger.com.test=debug

log4j.appender.A.Threshold=INFO

log4j.appender.B.Threshold=WARN

那麽就算設定com.test輸出的級別是debug,但是A只接收INFO級別以上的log,而B只接收WARN級別以上的log

舉例2:
log4j.appender.XX.Threshold門檻低於log4j.logger.XX時,

log4j.logger.com.test=info

log4j.appender.A.Threshold=DEBUG

log4j.appender.B.Threshold=WARN

那麽com.test只輸出info級別的,而A下設定的是debug,那麽com.test輸出的所有的日誌在A下可以全部顯示(當然是info以上的,因為com.test只給出了info以上的)。而在B下設定是warn,雖然com.test輸出info級別以上的log給B,但是B只接收warn以上的log。

通過這樣的方式配置,可以限定在不同的輸出口過濾不同等級的日誌。

應用舉例需求:
我們不太想輸出一些第三方jar的日誌,但是error級別以上的我們需要,我們想輸出我們自己的包下debug以上級別的日誌,但是在控制臺我想看到所有的,而在日誌文件下,我卻只想寫入warn級別以上的日誌。對於這樣的情況如何配置呢?

這個時候我們就根據依據的來配置一下log4j
首先來點背景設定
我們自己的jar包都是com.test開頭
A代表控制臺輸出
B代表文件輸出
當然那些都只是一個命名

好,我們開始。首先所有的第三方jar都不太想看到輸出日誌,但是error的級別以上的需要
log4j.rootLogger=error, A,B
這句的意思就是設定所有log輸出給A,B的等級為error

然後,我們想輸出我們自己的包下debug以上級別的日誌。
log4j.logger.com.test=debug
這句是設定com.test包下的所有log輸出級別為debug,這裏的設定直接覆蓋了rootLogger對com.test包的作用。

最後,在控制臺我想看到所有的,而在日誌文件下,我卻只想寫入warn級別以上的日誌。
log4j.appender.A=org.apache.log4j.ConsoleAppender
#config A position output contain DEBUG level and up
log4j.appender.A.Threshold=DEBUG
log4j.appender.A.layout=org.apache.log4j.PatternLayout
log4j.appender.A.layout.ConversionPattern=%d [%-5p] %l:%t - %m %n

#in the daily files
log4j.appender.B=org.apache.log4j.DailyRollingFileAppender
log4j.appender.B.Threshold=WARN
log4j.appender.B.File=${root.path}/log/MyProject.log
log4j.appender.B.DatePattern=‘.‘yyyy-MM-dd‘.log‘
log4j.appender.B.layout=org.apache.log4j.PatternLayout
log4j.appender.B.layout.ConversionPattern=%d [%-5p] %l:%t - %m %n

和日誌級別無關的代碼就不解釋了。直接重點,
log4j.appender.A.Threshold=DEBUG
log4j.appender.B.Threshold=WARN
表示A的接收級別為debug,而B的接收級別為warn。這樣,A就可以看到debug以上的所有日誌,而寫入B的只有warn級別以上的日誌。

轉自:http://blog.csdn.net/zmx729618/article/details/51260803

[轉載]log4j輸出日誌級別控制