2012-04-09 62 views
3

我有麻煩理解加,類別日誌記錄級別和附加器閾值之間的關係......log4j的可加性,類別日誌記錄級別和附加器的閾值

這裏的情況(我的log4j.properties文件):

log4j.category.GeneralPurpose.classTypes=INFO, webAppLogger 
log4j.additivity.GeneralPurpose.classTypes=true 

log4j.category.GeneralPurpose=ERROR, defaultLogger 
log4j.additivity.GeneralPurpose=false 

log4j.appender.webAppLogger=org.apache.log4j.RollingFileAppender 
log4j.appender.webAppLogger.File=webapps/someWebApp/logs/webApp.log 
log4j.appender.webAppLogger.MaxFileSize=3000KB 
log4j.appender.webAppLogger.MaxBackupIndex=10 
log4j.appender.webAppLogger.layout=org.apache.log4j.PatternLayout 
log4j.appender.webAppLogger.layout.ConversionPattern=%d [%t] (%F:%L) %-5p - %m%n 
log4j.appender.webAppLogger.Encoding=UTF-8 

log4j.appender.defaultLogger=org.apache.log4j.RollingFileAppender 
log4j.appender.defaultLogger.File=logs/server.log 
log4j.appender.defaultLogger.MaxFileSize=3000KB 
log4j.appender.defaultLogger.MaxBackupIndex=10 
log4j.appender.defaultLogger.layout=org.apache.log4j.PatternLayout 
log4j.appender.defaultLogger.layout.ConversionPattern=%d [%t] (%F:%L) %-5p - %m%n 
log4j.appender.defaultLogger.Encoding=UTF-8 

見解: 類GeneralPurpose.classTypes是INFO 類GeneralPurpose.classTypes有加TRUE 類是個通用ERROR 類別個通用有加FALSE

與當前配置我會假設發送到類別GeneralPurpose.classTypes。*的INFO消息只會記錄到webAppLogger,因爲父記錄器(cateogry)設置爲ERROR級別記錄。但是,情況並非如此,消息被記錄了兩次(每個日誌文件中有一個)。看起來像父類別的錯誤日誌記錄級別在事件作爲可加性的一部分發送時未予以考慮...

  1. 是我的觀察正確還是我錯過了什麼?
  2. 我應該如何改變配置才能在 server.log中實現ERROR級別的日誌記錄?

感謝,

GBA。

回答

3

類別的級別決定是否記錄或丟棄源自該類別的事件;它對從子類別收到的事件沒有任何過濾效果。

由於GeneraPurpose.classTypes的等級爲INFO,任何不如INFO嚴重的事件都將被丟棄,但其餘的將被保留。

由於GeneralPurpose.classTypestrue的可加性,使活動將在層次結構—具體包括GeneralPurpose轉嫁到它的父類。

由於閾值未在webAppLogger上設置,因此它會記錄它收到的所有事件。

由於閾值未在defaultLogger上設置,它將記錄它收到的所有事件。

如果您希望defaultLogger僅包含ERROR事件或更糟糕的事件,請將其閾值設置爲ERROR

+0

非常感謝您的明確解釋! – GBa 2012-04-09 23:50:45

+0

我可以知道我是否希望'defaultLogger'只包含ERROR,但不是致命的?我怎麼能這樣做?或者可以這樣做? – huahsin68 2013-08-13 03:24:25

+0

@ huahsin68你可以用'Filter'來完成。我不確定是否有一個提供了log4j來完成這個工作;可能會有。如果不是,你自己寫一個超級簡單,實際上只是一種實現方法。 – erickson 2013-08-13 04:06:00