Java 为什么Log4J2在Log4J2-test.xml之后停止,而不继续查找Log4J2.xml?

Java 为什么Log4J2在Log4J2-test.xml之后停止,而不继续查找Log4J2.xml?,java,log4j2,Java,Log4j2,我有两个应用程序都在寻找log4j2.xml。一个人找到了,一个人没有 将其添加到jvm后:-Dlog4j.debug(使用2.11.2的所有内容) 第一个正确运行的应用程序扫描并查找文件: 第二个应用程序在log4j2-test.xml之后停止扫描 我 当我将log4j2-test.xml添加到第二个应用程序时,它会找到它并正常工作。很明显,两者之间存在差异(应用程序非常相似),但却找不到。有什么想法吗?什么会导致Log4j2停止扫描属性文件?因为Log4j2查找配置的顺序 Log4j将检查

我有两个应用程序都在寻找log4j2.xml。一个人找到了,一个人没有

将其添加到jvm后:-Dlog4j.debug(使用2.11.2的所有内容)

第一个正确运行的应用程序扫描并查找文件:

第二个应用程序在log4j2-test.xml之后停止扫描


当我将log4j2-test.xml添加到第二个应用程序时,它会找到它并正常工作。很明显,两者之间存在差异(应用程序非常相似),但却找不到。有什么想法吗?什么会导致Log4j2停止扫描属性文件?

因为Log4j2查找配置的顺序

  • Log4j将检查“Log4j.configurationFile”系统属性,如果设置,将尝试使用与文件扩展名匹配的ConfigurationFactory加载配置
  • 如果未设置任何系统属性,则properties ConfigurationFactory将在类路径中查找log4j2-test.properties
  • 如果未找到此类文件,YAML配置工厂将在类路径中查找log4j2-test.YAML或log4j2-test.yml
  • 如果未找到此类文件,JSON ConfigurationFactory将在类路径中查找log4j2-test.JSON或log4j2-test.jsn
  • 如果未找到此类文件,XML配置工厂将在类路径中查找log4j2-test.XML。
  • 如果找不到测试文件,properties ConfigurationFactory将在类路径上查找log4j2.properties
  • 如果无法找到属性文件,YAML ConfigurationFactory将在类路径上查找log4j2.YAML或log4j2.yml
  • 如果无法找到YAML文件,JSON ConfigurationFactory将在类路径上查找log4j2.JSON或log4j2.jsn
  • 如果无法找到JSON文件,XML配置工厂将尝试在类路径上找到log4j2.XML。
  • 如果找不到配置文件,将使用DefaultConfiguration。这将导致日志输出转到控制台

  • 参考资料:

    是的。我看到了。不回答我的问题。我不想使用两个文件。您是否在src/java/resources和类似的src/test/resources中添加了log42.xml?不,只有src/java/resourceslog4j2-test.xml应该为src/test/resources添加,因为它将用于单元测试。您是正确的。我在任何地方都找不到log4j2-test.xml,但它一定是在某处找到的。谢谢你的帮助!