2013-10-28 96 views
0

我有幾個日誌文件logfiledebugLogFile。一個 - 更多的調試信息,少一些,但仍然需要一些。在未來,我希望有信息量在這兩個之間的第三個文件。在包級別選擇文件日誌記錄級別

我要求log4jINFO級別登錄包MyPck。這我需要logfile。但我需要水平MyPckdebugLogFile。這是個問題。

Both,logFile and debugLogFile have Threshold=ALL。我需要在每個日誌文件中都有可能寫出所有級別的信息。例如logfile將包含MyPckINFODEBUG水平MyPck1debugLogFile將包含INFO水平MyPckDEBUGMyPck1。如何解決這個問題呢?

log4j.rootLogger=ALL, logfile, debugLogFile 
log4j.logger.MyPck=INFO 

log4j.appender.logfile=org.apache.log4j.RollingFileAppender 
log4j.appender.logfile.File=logFile.log 
log4j.appender.logfile.Threshold=ALL 

log4j.appender.debugLogFile=org.apache.log4j.RollingFileAppender 
log4j.appender.debugLogFile.File=debugLogFile.log 
log4j.appender.debugLogFile.Threshold=ALL 

回答

0

這應該讓你在正確的方向前進:

log4j.rootLogger=TRACE, defaultFile 

log4j.appender.defaultFile=org.apache.log4j.RollingFileAppender 
log4j.appender.defaultFile.File=defaultFile.log 

log4j.appender.logfile=org.apache.log4j.RollingFileAppender 
log4j.appender.logfile.File=logFile.log 

log4j.appender.debugLogFile=org.apache.log4j.RollingFileAppender 
log4j.appender.debugLogFile.File=debugLogFile.log 

log4j.logger.MyPck=DEBUG,logFile 
log4j.logger.MyPck1=INFO,logFile 

log4j.logger.MyPck=INFO,debugLogFile 
log4j.logger.MyPck1=DEBUG,debugLogFile 

log4j.additivity.MyPck=false 
log4j.additivity.MyPck1=false 

log4j.additivity.MyPck=false設置確保MyPck的輸出不會出現在rootLogger附加目的地。

+0

在這種情況下,logFile保持爲空。更多細節在http://stackoverflow.com/questions/19658150/setting-package-wide-logger-level-via-logger – vico

0

當您爲MyPckINFO日誌級別,你實際設置門檻此程序包INFO,即低於該水平沒有消息將永遠不會發出。

因此,您需要將軟件包的閾值設置爲想要記錄的最低通用級別。

下一步是再配置記錄器的閾值來過濾掉你不想要的任何消息:

log4j.rootLogger=ALL, logfile, debugLogFile 
log4j.logger.MyPck=DEBUG 

log4j.appender.logfile=org.apache.log4j.RollingFileAppender 
log4j.appender.logfile.File=logFile.log 
log4j.appender.logfile.Threshold=INFO 

log4j.appender.debugLogFile=org.apache.log4j.RollingFileAppender 
log4j.appender.debugLogFile.File=debugLogFile.log 
log4j.appender.debugLogFile.Threshold=DEBUG 

注意,第二附加器獲取第一個的所有郵件的副本。