【问题标题】:Can I make log4j use the configuration in my resources folder?我可以让 log4j 使用我的资源文件夹中的配置吗?
【发布时间】:2015-07-16 16:42:47
【问题描述】:

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

那么我怎样才能告诉它文件在哪里并最终开始实际学习使用它呢?

【问题讨论】:

  • 首先不要开始更改默认设置,这会让生活更轻松。
  • @khmarbaise 你指的是什么默认值?
  • @khmarbaise 我正在将项目移植到 Maven 中。更改现有目录结构并没有让任何事情变得更容易。

标签: java maven log4j2


【解决方案1】:

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

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

另外,你可以看看documentation

  1. Lo​​g4j 将检查“log4j.configurationFile”系统属性,如果设置,将尝试使用 与文件扩展名匹配的 ConfigurationFactory。
  2. 如果未设置系统属性,YAML ConfigurationFactory 将在类路径中查找 log4j2-test.yaml 或 log4j2-test.yml。
  3. 如果未找到此类文件,JSON ConfigurationFactory 将在类路径中查找 log4j2-test.json 或 log4j2-test.jsn。
  4. 如果未找到此类文件,XML ConfigurationFactory 将在类路径中查找 log4j2-test.xml。
  5. 如果找不到测试文件,YAML ConfigurationFactory 将在类路径中查找 log4j2.yaml 或 log4j2.yml。
  6. 如果找不到 YAML 文件,JSON ConfigurationFactory 将在类路径中查找 log4j2.json 或 log4j2.jsn。
  7. 如果找不到 JSON 文件,XML ConfigurationFactory 将尝试在类路径中找到 log4j2.xml。
  8. 如果找不到配置文件,将使用 DefaultConfiguration。这将导致日志输出转到控制台。

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

【讨论】:

  • 错误消失了 - 谢谢,我确实把文件命名错了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-29
  • 2012-03-10
  • 1970-01-01
  • 2019-01-10
  • 2019-03-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多