來調整additivity
財產造成另一種方法是檢查你的記錄儀從最具體到最普通的。在以下示例中,我們希望在控制檯中看到foo.bar.LoggingExampleClass中發生的任何日誌事件的雙重記錄。從foo.bar中刪除額外的控制檯appender是安全的。LoggingExampleClass記錄器,因爲它已被根記錄器覆蓋。
<Logger name="foo.bar.LoggingExampleClass" level="DEBUG">
<AppenderRef ref="Console" /> <!-- THIS APPENDER COULD BE REMOVED -->
<AppenderRef ref="FooBarPackageLogging" />
</Logger>
<Root level="WARN">
<AppenderRef ref="Console" />
<AppenderRef ref="MainLogFile" />
</Root>
有折衷到可加性調整方法和附加器調整方法兩者。關閉疊加性可能會無意中阻止了使用期望的通用級記錄器的appender。在上面的例子中,在foo.bar.LoggingExampleClass記錄器上設置additivity="false"
屬性意味着記錄事件不會被追加到Root記錄器中引用的MainLogFile中。
另一方面,如果在不檢查對更細粒度記錄器的影響的情況下更改父appender,則依賴父appender可能會產生問題。例如,假設需要將foo.bar.LoggingExampleClass記錄事件寫入控制檯。即使foo.bar.LoggingExampleClass記錄器的控制檯appender被刪除,它們當前也在上面的示例配置中。但是,如果控制檯appender在沒有任何其他調整的情況下也從Root Logger中移除,則不再滿足此要求。
可能是配置問題或初始化問題。 你在哪裏初始化記錄器? 不是你調用Logger.getLogger(SomeClass.class)兩次嗎? 一些額外的代碼可以給我們更多的信息來幫助你。 – MaSEL 2011-04-18 06:38:25