2011-06-17 72 views
0

我有一個應用程序需要將「應用程序日誌消息」記錄到附加程序,將「安全日誌消息」記錄到另一個附加程序(安全日誌消息不能出現在應用程序中日誌)。我想建立我的記錄器這樣的:如何從同一應用程序登錄到應用程序日誌和安全日誌

Logger appLogger = Logger.getLogger("app." + myClassName); 
Logger securityLogger = Logger.getLogger("security." + myClassName); 

和設置我的log4j的配置是這樣的:

log4j.logger.app = DEBUG, applicationLogAppender 
log4j.additivity.app = false 

log4j.logger.security = DEBUG, securityLogAppender 
log4j.additivity.security = false 

什麼是配置log4j要做到這一點的最好方法是什麼?我相信我的解決方案能夠工作,並且仍然使開發人員能夠啓用和禁用特定軟件包/類的日誌記錄,只要他們記得在軟件包/類名稱前加上「app」即可。或「安全」,但我想知道是否有更好的方法來做到這一點。

注意:該解決方案需要適用於log4j和log4cxx。

回答

0

兩年前,我被授予完全相同的任務,並且我提出了這個問題,只有我們的記錄器前綴被稱爲「admin」和「debug」。您的/我的建議類創建兩個獨立的頂級記錄器,就在根記錄器下面。

我不認爲log4j/cxx允許內置的根記錄器不被配置。要阻止它記錄來自不遵循命名策略的記錄器的響應,我將其日誌級別設置爲「OFF」。