当前位置: 首页 > 知识库问答 >
问题:

未找到log4j2.xml,但已找到log4j2-test.xml

罗安宁
2023-03-14

我正在从log4j1.x升级到log4j2,并将log4j.xml配置文件更新为一个新的log4j2.xml配置。我在运行maven,spring和Mule。

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

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

共有1个答案

束福
2023-03-14

由于log4j2-test.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());
    }
}
 类似资料:
  • Log4j正在查找我的配置,因为一旦我删除它,我就会收到一条错误消息,说它找不到配置,但是它的属性在登录时不会反映出来。 log4j2。属性: Test.java: 输出: 如您所见,当记录器设置为INFO时,它将返回级别为ERROR,并且时间格式包括毫秒,即使它已被删除。 配置文件取自log4j网站,只做了一些小改动(上面提到的两个,以及) 我使用的是2.8.1版。

  • 我们添加了使用log4J 2的库。X,但我们仍在使用log4J 1。X(主要是因为我们有自己的一些应用程序和记录仪)。我被告知解决方案是发送log4J 2。x到slf4j(使用log4j-to-slf4j,版本2。X),然后slf4j到log4J 1。X,使用slf4j-log4j12,版本1。X. 这就是我刚才所做的,但我仍然得到以下信息: ERROR StatusLogger未找到log4j2

  • 我们已经添加了使用log4j2.x的库,但是我们仍然在使用log4j1.x(主要是因为我们有自己的一些附加程序和记录器的impl)。我被告知,解决方案是将log4j2.x发送到slf4j(使用log4j-to-slf4j,版本2.x),然后将slf4j发送到log4j1.x,使用slf4j-log4j12,版本1.x。 这就是我刚才所做的,但我仍然得到这样的信息: 我希望slf4j使用log4J

  • 我已经将其隔离到一个非常简单的测试项目中,该项目除了简单的log4j2test配置使用之外没有其他用途。文件目录结构: 建筑sbt: log4j2.xml内容复制/粘贴从示例在官方留档:https://logging.apache.org/log4j/2.x/manual/configuration.html SimpleMain。斯卡拉: 我跑步与 输出:

  • 我知道使用SLF4J和Log4j2作为记录器实现应该很容易。 您只需要将jar添加到类路径中。 我原以为我是这样做的,但我现在仍在努力 我的的关键部分 然后是 然后,查看lib文件夹 但是我没有得到相应的错误消息。 我正在使用 Eclipse版本:2020-09(4.17.0) 和

  • 最近,我决定学习如何使用log4j2记录器。我下载了所需的jar文件,创建了库,xml编译文件,并尝试使用它。不幸的是,我在console(Eclipse)中得到了这样的语句: 这是我的测试类代码: 和我的xml配置文件: 我还尝试使用不带标记的xml,以及包规范和各种文件夹/包目录,但没有帮助。现在我的文件直接位于Eclipse的project文件夹中。