2017-07-28 51 views
0

我有像這樣定義的log4j屬性文件:爲什麼我會在控制檯中獲得DEBUG級別的日誌記錄?

log4j.rootLogger=INFO, stdout 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n 

log4j.logger.com.github.user=DEBUG, file 
log4j.appender.file=org.apache.log4j.RollingFileAppender 
log4j.appender.file.File=target/cucumber-parser.log 
log4j.appender.file.MaxFileSize=5MB 
log4j.appender.file.MaxBackupIndex=10 
log4j.appender.file.layout=org.apache.log4j.PatternLayout 
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n 

根據我的理解,INFO級別的日誌應該被路由到stdout(控制檯)和DEBUG只應寫入文件。但是我在控制檯中同時獲得了INFODEBUG級別。我究竟做錯了什麼?

回答

0

我設法通過將下面一行的log4j.appender.stdout解決我的問題:

log4j.appender.stdout.Threshold=INFO 

這一行添加到我張貼在我原來的問題原來的配置,只有INFO級別的日誌將被打印到控制檯和DEBUG將根據需要重新路由到文件。

0

因爲INFO級別覆蓋了DEBUG級別。所以你看到兩個。

查看更多Logging Levels

0

如果檢查log4j docthis tutorial你可以看到關於級別的詳細信息,但基本上是:ALL < DEBUG <信息< WARN < ERROR < FATAL < OFF

如此日誌顯示所選水平和所有greaters。

0

add log4j.additivity.com.github.user=false

正如在你的配置中,com.github.user的級別被設置爲調試。除了「文件」之外,它也會添加到根記錄器,因此您可以在控制檯中看到com.github.user的調試日誌。實際上,如果你這樣寫配置,拆分記錄器和appender,你可以更好地理解。

log4j.rootLogger=INFO, stdout 
log4j.logger.com.github.user=DEBUG, file 

log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n 

log4j.appender.file=org.apache.log4j.RollingFileAppender 
log4j.appender.file.File=target/cucumber-parser.log 
log4j.appender.file.MaxFileSize=5MB 
log4j.appender.file.MaxBackupIndex=10 
log4j.appender.file.layout=org.apache.log4j.PatternLayout 
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n 

對於記錄器,您指定com.github.user要調試,並與rootlogger設置的所有其他信息。

然後com.github.user將被打印到file,並且所有日誌將被打印到控制檯。如果您設置了additivity,com.github.user將從rootlogger中刪除,那麼在控制檯中將只有其他日誌。

+0

嗨,謝謝你的回答,但是我確定它會在萬一'com.github.user' *是項目層次結構中的根節點時起作用。我曾嘗試過,沒有任何東西印在控制檯上。 –

相關問題