在哪里放置log4j.xml

Far*_*rid 37 log4j

我们如何指定log4j在尝试查找其xml配置文件时必须查看?

看来默认情况下,log4j会查看类文件夹的根目录,我可以说使用调试log4j功能并从IDE运行我的应用程序.

但是,我的jar中没有任何类文件夹了.log4j.xml文件位于jar的根目录下.

我已经尝试设置选项-Dlog4j.configuration = log4j.xml但它不起作用.

以下是我的应用程序的全局结构:

  • COM
  • LIB
  • META-INF
  • 的log4j.xml

Kel*_*nch 34

它使用CLASSPATH找到log4j.xml.如果log4j找不到任何配置文件,它将向控制台发送错误.如果您没有看到任何此类错误,则可能是它找到的配置文件可能不是您正在编辑的配置文件.有一个命令行选项可强制Log4J报告它正在使用的配置文件的路径.

来自http://wiki.apache.org/logging-log4j/Log4jConfigurationHelp

如果你使用"-Dlog4j.debug"运行,那么log4j将打印出信息到标准输出,告诉它如何尝试自我配置.仔细查看它会告诉您它在哪里查找配置文件.


rws*_*wst 20

假设您的log4j配置在源树之外.如果找不到您的配置文件,请帮助:

-Dlog4j.configuration=file:///your/path/log4j.xml
Run Code Online (Sandbox Code Playgroud)

请注意限定符文件:///.没有它就行不通.


Mor*_*hel 5

我没有任何错误

所以log4j找到你的配置,否则你会得到:

log4j:WARN找不到logger()的appender.
log4j:WARN请正确初始化log4j系统.

也:

日志刚刚打印在控制台上

这意味着您可能需要定义文件追加器,如FileAppenderRollingFileAppender.简短介绍中的"配置"部分有几个例子.


小智 5

可能这是一个很老的问题,但对我来说答案在这里 https://logging.apache.org/log4j/2.x/manual/configuration.html

根据上面的链接,Apache 日志在类路径中按特定顺序搜索 log4j2.xml 文件,如下所示

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

  • 您知道我是否可以将 .xml 文件放入资源文件夹的子文件夹或嵌套子文件夹中吗?我不知道如何使用“log4j.configurationFile”加载它......我只能从根资源文件夹加载它,我做错了什么?(请注意:#163489028) (2认同)