log4j.xml的放置位置

Where to place log4j.xml

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

似乎默认情况下,log4j会查看类文件夹的根,我可以说使用debug log4j功能并从IDE运行我的应用程序。

但是,我的jar中不再有任何类文件夹。 log4j.xml文件位于jar的根目录。

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

这是目前我的应用程序的全局结构:

  • com
  • LIB
  • 元信息
  • log4j.xml


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

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

If you run with"-Dlog4j.debug" then
log4j will print out info to standard
output telling how it is trying to
configure itself. Looking through that
will tell you where it is looking for
the config file.


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

1
-Dlog4j.configuration=file:///your/path/log4j.xml

注意限定符文件:///。没有它是行不通的。


I don't have any error

因此,log4j正在查找您的配置,否则您将获得:

log4j:WARN No appenders could be found for logger ().
log4j:WARN Please initialize the log4j system properly.

也:

The log are just printed out on the console

因此,这意味着您可能需要定义一个文件追加器,例如FileAppender或RollingFileAppender。简短介绍中的"配置"部分提供了一些示例。


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

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

  • Log4j将检查" log4j.configurationFile"系统属性,如果已设置,将尝试使用与文件扩展名匹配的ConfigurationFactory加载配置。
  • 如果未设置任何系统属性,则属性ConfigurationFactory将在类路径中查找log4j2-test.properties。
  • 如果找不到此类文件,则YAML ConfigurationFactory将在类路径中查找log4j2-test.yaml或log4j2-test.yml。
  • 如果找不到此类文件,则JSON ConfigurationFactory将在类路径中查找log4j2-test.json或log4j2-test.jsn。
    如果找不到这样的文件,XML ConfigurationFactory将在类路径中查找log4j2-test.xml。
  • 如果找不到测试文件,则属性ConfigurationFactory将在类路径上查找log4j2.properties。
  • 如果找不到属性文件,则YAML ConfigurationFactory将在类路径上查找log4j2.yaml或log4j2.yml。
  • 如果无法找到YAML文件,则JSON ConfigurationFactory将在类路径上查找log4j2.json或log4j2.jsn。
  • 如果无法找到JSON文件,XML ConfigurationFactory将尝试在类路径上找到log4j2.xml。
  • 如果找不到配置文件,将使用DefaultConfiguration。这将导致日志记录输出进入控制台。

  • 您可以使用:

    1
    DOMConfigurator.configure(log4jConfigurationFilename);

    如果不是根,请指定位置!


    不用担心放在哪里。只需运行您的项目,在eclipse中说,log4j会抛出异常,告诉您它在哪里寻找。然后,您可以将其放在那里。

    一旦它开始工作,您还将了解如何更改逻辑,从而找出解决方案。