2011-06-17 73 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”。