我有2个都在寻找log4j2.xml的应用程序。一个人找到,一个人找不到。
将其添加到jvm之后:-Dlog4j.debug(使用2.11.2)
第一个运行正常的应用程序扫描并找到文件:
log4j2-test.xml之后,第二个应用程序停止扫描
当我将log4j2-test.xml添加到第二个应用程序时,它将找到它并可以正常工作。显然有区别(应用程序非常相似),但找不到它。有任何想法吗?是什么原因导致Log4j2停止扫描属性文件?
答案 0 :(得分:0)
由于Log4j2用于查找配置的顺序。
- Log4j将检查“ log4j.configurationFile”系统属性,如果设置了该属性,将尝试使用与文件扩展名匹配的ConfigurationFactory加载配置。
- 如果未设置系统属性,则ConfigurationFactory属性将在类路径中查找log4j2-test.properties。
- 如果未找到此类文件,则YAML ConfigurationFactory将在类路径中查找log4j2-test.yaml或log4j2-test.yml。
- 如果未找到此类文件,则JSON ConfigurationFactory将在类路径中查找log4j2-test.json或log4j2-test.jsn。
- 如果找不到此类文件,XML ConfigurationFactory将在类路径中查找log4j2-test.xml。
- 如果找不到测试文件,则ConfigurationFactory属性将在类路径中查找log4j2.properties。
- 如果找不到属性文件,则YAML ConfigurationFactory将在类路径中查找log4j2.yaml或log4j2.yml。
- 如果无法找到YAML文件,则JSON ConfigurationFactory将在类路径上查找log4j2.json或log4j2.jsn。
- 如果无法找到JSON文件,XML ConfigurationFactory将尝试在类路径上找到log4j2.xml。
- 如果找不到配置文件,将使用DefaultConfiguration。这将导致日志记录输出进入控制台。
参考:https://logging.apache.org/log4j/2.x/manual/configuration.html#AutomaticConfiguration