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

时间:2019-06-04 17:04:13

标签: java log4j2

我有2个都在寻找log4j2.xml的应用程序。一个人找到,一个人找不到。

将其添加到jvm之后:-Dlog4j.debug(使用2.11.2)

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

enter image description here

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

enter image description here

当我将log4j2-test.xml添加到第二个应用程序时,它将找到它并可以正常工作。显然有区别(应用程序非常相似),但找不到它。有任何想法吗?是什么原因导致Log4j2停止扫描属性文件?

1 个答案:

答案 0 :(得分:0)

由于Log4j2用于查找配置的顺序。

  
      
  1. Log4j将检查“ log4j.configurationFile”系统属性,如果设置了该属性,将尝试使用与文件扩展名匹配的ConfigurationFactory加载配置。
  2.   
  3. 如果未设置系统属性,则ConfigurationFactory属性将在类路径中查找log4j2-test.properties。
  4.   
  5. 如果未找到此类文件,则YAML ConfigurationFactory将在类路径中查找log4j2-test.yaml或log4j2-test.yml。
  6.   
  7. 如果未找到此类文件,则JSON ConfigurationFactory将在类路径中查找log4j2-test.json或log4j2-test.jsn。
  8.   
  9. 如果找不到此类文件,XML ConfigurationFactory将在类路径中查找log4j2-test.xml。
  10.   
  11. 如果找不到测试文件,则ConfigurationFactory属性将在类路径中查找log4j2.properties。
  12.   
  13. 如果找不到属性文件,则YAML ConfigurationFactory将在类路径中查找log4j2.yaml或log4j2.yml。
  14.   
  15. 如果无法找到YAML文件,则JSON ConfigurationFactory将在类路径上查找log4j2.json或log4j2.jsn。
  16.   
  17. 如果无法找到JSON文件,XML ConfigurationFactory将尝试在类路径上找到log4j2.xml。
  18.   
  19. 如果找不到配置文件,将使用DefaultConfiguration。这将导致日志记录输出进入控制台。
  20.   

参考:https://logging.apache.org/log4j/2.x/manual/configuration.html#AutomaticConfiguration