我的当前Web应用程序使用log4j 1.2,我想迁移到log4j2,但我无法弄清楚如何处理我的特定用例。
在我的Web应用程序的war文件中,我存储了一个具有合理默认值的log4j配置文件。我的设计是搜索一个外部的配置文件,该文件将覆盖与war捆绑的配置。这样,日志记录配置在部署时进行配置,并且每个服务器都可以不同。
在log4j 1.2中,可以通过以下方法使用ServletContextListener来实现,并且它非常有效:
在我的Web应用程序的war文件中,我存储了一个具有合理默认值的log4j配置文件。我的设计是搜索一个外部的配置文件,该文件将覆盖与war捆绑的配置。这样,日志记录配置在部署时进行配置,并且每个服务器都可以不同。
在log4j 1.2中,可以通过以下方法使用ServletContextListener来实现,并且它非常有效:
/**
* Configures system-wide log4j logging system with log4j.xml from the
* class path. This overrides configuration from the default location in
* Tomcat: WEB-INF/classes
*/
private void configureLog4J() {
URL url = ClassLoader.getSystemResource("log4j.xml");
if (url != null) {
DOMConfigurator.configure(url);
log = org.apache.log4j.LogManager.getLogger(LDSContextListener.class);
log.info("log4j.xml loaded from " + url);
}
}
如果我要迁移到log4j2,如何使用外部文件的配置覆盖内部文件?log4j2在其API中没有DOMConfigurator
。