【发布时间】:2014-10-07 07:28:44
【问题描述】:
我当前的 Web 应用程序使用 log4j 1.2,我想迁移到 log4j2,但我无法弄清楚如何处理我的特定用例。
在我的 web 应用程序的 war 文件中,我存储了一个具有合理默认值的 log4j 配置文件。我的设计是搜索war文件外部的配置文件,该文件将覆盖与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。
【问题讨论】: