我有麻煩理解加,類別日誌記錄級別和附加器閾值之間的關係......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級別記錄。但是,情況並非如此,消息被記錄了兩次(每個日誌文件中有一個)。看起來像父類別的錯誤日誌記錄級別在事件作爲可加性的一部分發送時未予以考慮...
- 是我的觀察正確還是我錯過了什麼?
- 我應該如何改變配置才能在 server.log中實現ERROR級別的日誌記錄?
感謝,
GBA。
非常感謝您的明確解釋! – GBa 2012-04-09 23:50:45
我可以知道我是否希望'defaultLogger'只包含ERROR,但不是致命的?我怎麼能這樣做?或者可以這樣做? – huahsin68 2013-08-13 03:24:25
@ huahsin68你可以用'Filter'來完成。我不確定是否有一個提供了log4j來完成這個工作;可能會有。如果不是,你自己寫一個超級簡單,實際上只是一種實現方法。 – erickson 2013-08-13 04:06:00