我可以让log4j使用我的资源文件夹中的配置吗?

时间:2015-05-06 13:40:42

标签: java maven log4j2

让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忽略了配置文件。

那么如何判断文件的位置并最终开始实际学会使用呢?

1 个答案:

答案 0 :(得分:1)

您使用的是 log4j2 - 这需要 log4j2.xml ,而不是log4j.xml

只需重命名文件,将其放在资源文件夹中(或类路径中的任何其他位置),它应该可以正常工作。

Alternatevly,您可以查看documentation

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

但请注意,log4j2 xml-configuration的语法与版本1不同。