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