让log4j工作比宣传更复杂。我一直收到这个错误:
ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.
我试图将log4j.xml
文件放在所有地方,但我想要的是将它放在我的/resources
文件夹中。在我的pom.xml
中,定义了以下路径:
<properties>
<src.dir>src/</src.dir>
<test.dir>test/</test.dir>
<resource.dir>resources/</resource.dir>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<build>
<testSourceDirectory>${test.dir}</testSourceDirectory>
<sourceDirectory>${src.dir}</sourceDirectory>
<resources>
<resource>
<directory>${resource.dir}</directory>
</resource>
</resources>
... long list of plugins coming, let's cut it off.
resources
目录中的所有资源均可从.jar
访问。有图像和图标,都工作。但是Log4j忽略了配置文件。
那么如何判断文件的位置并最终开始实际学会使用呢?
答案 0 :(得分:1)
您使用的是 log4j2
- 这需要 log4j2.xml
,而不是log4j.xml
。
只需重命名文件,将其放在资源文件夹中(或类路径中的任何其他位置),它应该可以正常工作。
Alternatevly,您可以查看documentation:
- Log4j将检查&#34; log4j.configurationFile&#34;系统属性,如果设置,将尝试使用 与文件扩展名匹配的ConfigurationFactory。
- 如果未设置系统属性,YAML ConfigurationFactory将在类路径中查找log4j2-test.yaml或log4j2-test.yml。
- 如果找不到这样的文件,JSON ConfigurationFactory将在类路径中查找log4j2-test.json或log4j2-test.jsn。
- 如果找不到这样的文件,XML ConfigurationFactory将在类路径中查找log4j2-test.xml。
- 如果找不到测试文件,YAML ConfigurationFactory将在类路径上查找log4j2.yaml或log4j2.yml。
- 如果找不到YAML文件,JSON ConfigurationFactory将在类路径中查找log4j2.json或log4j2.jsn。
- 如果找不到JSON文件,XML ConfigurationFactory将尝试在类路径上找到log4j2.xml。
- 如果找不到配置文件,将使用DefaultConfiguration。这将导致日志记录输出进入控制台。
醇>
但请注意,log4j2 xml-configuration的语法与版本1不同。