Log4j2.xml 未找到,但 log4j2-test.xml 是

Log4j2.xml not found but log4j2-test.xml is

我正在从 log4j 1.x 升级到 log4j 2,并将我的 log4j.xml 配置文件更新为新的 log4j2.xml 配置。我是 运行 maven,spring,和 mule。

当 运行 测试 Maven 构建时,log4j2.xml 文件未被拾取。但是,如果我重命名文件 log4j2-test.xml,它会被拾取(例如,在第二种情况下,带有自定义 PatternLayout 的控制台记录器可以正常工作,但在第一种情况下使用默认配置)。

为什么 log4j 会选择 log4j2-test.xml 而不是 log4j2.xml?

由于 log4j2-test.xmllog4j2.xmlhigher load precedence,您可能在类路径中的某处有另一个 log4j2 配置文件覆盖了您的 log4j2.xml。当您 运行 您的 Maven 测试构建时,尝试通过执行以下代码来查找提取哪个 conf 文件的位置:

for (String confFile : Arrays.asList("/log4j2-test.xml", "/log4j2.yaml", "/log4j2.yml", "/log4j2.json", "/log4j2.jsn", "/log4j2.xml")) {
    URL resource = YourTestClass.class.getResource(confFile);
    if (resource != null) {
        System.out.format("found %s in: %s\n", confFile, resource.getFile());
    }
}