【问题标题】:Log4j2.xml not found but log4j2-test.xml is找不到 Log4j2.xml 但 log4j2-test.xml 是
【发布时间】:2015-08-04 02:22:49
【问题描述】:

我正在从 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?

【问题讨论】:

    标签: java spring maven log4j log4j2


    【解决方案1】:

    由于log4j2-test.xmlhigher load precedencelog4j2.xml 有一个log4j2.xml,你可能在你的类路径的某个地方有另一个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());
        }
    }
    

    【讨论】:

    • 感谢@heenenee,在这样做之后,我能够确定 mule-core 生成自己的 log4j2-test.xml 优先。现在我需要弄清楚如何覆盖或忽略该文件,或者阻止它生成或放在类路径中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-10
    • 2014-10-18
    • 2015-11-30
    • 2021-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多