可以在同一个Tomcat web应用程序中使用多个log4j.properties文件吗?

可以在同一个Tomcat web应用程序中使用多个log4j.properties文件吗?,log4j,Log4j,我正在为一个现成的JavaWeb应用程序编写一个自定义扩展。该应用程序使用log4j进行日志记录,我想专门为我的扩展添加一个新的记录器和appender。问题在于应用程序管理log4j.properties文件,该文件是根据管理屏幕UI中的选择动态生成的。因为这是一个“现成”的应用程序,所以我不能修改源代码。因此,如果我将自己的记录器和附加器添加到文件中,只要管理员更改UI中的日志首选项,它就会被覆盖 是否可以让log4j从2个文件中获取其配置?例如,我想要如下内容: applog.proper

我正在为一个现成的JavaWeb应用程序编写一个自定义扩展。该应用程序使用log4j进行日志记录,我想专门为我的扩展添加一个新的记录器和appender。问题在于应用程序管理log4j.properties文件,该文件是根据管理屏幕UI中的选择动态生成的。因为这是一个“现成”的应用程序,所以我不能修改源代码。因此,如果我将自己的记录器和附加器添加到文件中,只要管理员更改UI中的日志首选项,它就会被覆盖

是否可以让log4j从2个文件中获取其配置?例如,我想要如下内容:

applog.properties #(Dynamically generated from admin UI)
mylog.properties  #(My static properties)
在这个场景中,log4j会以某种方式将两个文件中的条目组合起来,以获得完整的配置

这可能吗?或者还有其他解决方法吗?

我从未找到“合并”多个log4j.properties文件的方法,但我找到了一个可行的解决方案。log4j配置可以在运行时进行编程操作,类似于下面的代码片段。这有效地将我的自定义log4j设置合并到log4j.properties文件定义的配置中,在我的情况下,我无法编辑该文件

// Init custom logging

// Define layout
PatternLayout layout = new PatternLayout();
layout.setConversionPattern("%d [%-5p] -- %m%n");

// Create appender
RollingFileAppender appender = new RollingFileAppender();
appender.setFile(LOG_PATH);
appender.setMaxFileSize("2MB");
appender.setMaxBackupIndex(0);
appender.setLayout(layout);
appender.activateOptions(); // It didn't work without this

// Get our logger and add appender.
log = Logger.getLogger("[MyCustomLogger]");
log.setLevel(YOUR_LOGGING_LEVEL_HERE);
log.addAppender(appender);