我有一个场景,我想初始化多个log4j记录器,使用标准的log4j.properties文件作为属性的基础来写入自己的文件。然后我想修改我的代码中的属性来设置记录器。在代码中,我一直在设置我的Logger:
PropertyConfigurator.configure(log4jpropertiespath);
但是我需要能够设置文件appender和一些属性,如下所示。特别想要设置Additivity以确保记录器实例保留自己的日志信息,无论创建了多少个包并初始化了记录器。
SimpleLayout layout = new SimpleLayout();
FileAppender appender = new FileAppender(layout, logFileName, true);
this.logger.setAdditivity(false);
this.logger.addAppender(appender);
感谢任何指导。
答案 0 :(得分:0)
我仍然不认为这是一个好主意(拥有任意数量的日志文件,等等),但是你可以通过包装Logger.getLogger方法来做到这一点,就像这样
public static Logger getPackageLogger(String packageName) {
Logger logger = Logger.getLogger(packageName);
if (logger.getAppender("myPackageAppender") == null) {
String logFileName = packageName + ".log"; // or something
SimpleLayout layout = new SimpleLayout();
FileAppender appender = new FileAppender(
layout, logFileName, true);
appender.setName("myPackageAppender");
logger.setAdditivity(false);
logger.addAppender(appender);
}
return logger;
}
这可以多次调用,并且应该只配置一次每个不同的(包)记录器对象。