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文件中搜索日志,如下所示
如果找不到这样的文件,XML ConfigurationFactory将在类路径中查找log4j2-test.xml。
您可以使用:
1 | DOMConfigurator.configure(log4jConfigurationFilename); |
如果不是根,请指定位置!
不用担心放在哪里。只需运行您的项目,在eclipse中说,log4j会抛出异常,告诉您它在哪里寻找。然后,您可以将其放在那里。
一旦它开始工作,您还将了解如何更改逻辑,从而找出解决方案。