放置log4j.xml的位置

zbdgwd5y  于 2023-02-04  发布在  其他
关注(0)|答案(6)|浏览(224)

我们如何指定log4j在试图查找其xml配置文件时必须查看的内容?
默认情况下,log4j似乎会查找类文件夹的根目录,我可以说,使用调试log4j功能并从IDE运行我的应用程序。
但是,我的jar中不再有任何class文件夹,log4j.xml文件位于jar的根目录下。
我已经尝试设置选项-Dlog4j.configuration=log4j.xml,但它不起作用。
下面是目前我的应用程序的全局结构:

  • 玉米
  • 利伯
  • 元推理
  • log4j.xml
6yjfywim

6yjfywim1#

它使用CLASSPATH查找log4j.xml。如果log4j没有找到任何配置文件,它将向控制台发送一个错误。如果您没有看到任何此类错误,则可能是它正在查找的配置文件可能不是您正在编辑的文件。有一个命令行选项可以强制Log4J报告它正在使用的配置文件的路径。
http://wiki.apache.org/logging-log4j/Log4jConfigurationHelp开始
如果你用"-Dlog4j.debug"运行,log4j会把信息打印到标准输出,告诉你它是如何配置自己的,通过它会告诉你它在哪里寻找配置文件。

cigdeys3

cigdeys32#

假设你的log4j配置文件在源代码树之外,如果它找不到你的配置文件,请帮助它:

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

注意限定符file:///。没有它将无法工作。

7ajki6be

7ajki6be3#

也许这是一个很老的问题,但对我来说答案是在官方Log4j 2文档:

自动配置

Log4j能够在初始化期间 * 自动 * 配置自身。Log4j启动时,它将定位所有ConfigurationFactory插件,并按从高到低的加权顺序排列它们。交付时,Log4j包含四个ConfigurationFactory实现:一个用于JSON,一个用于YAML,一个用于属性,一个用于XML。

  1. Log4j将检查"log4j2.configurationFile"系统属性,如果已设置,则将尝试使用与文件扩展名匹配的ConfigurationFactory加载配置。请注意,这不限于本地文件系统上的位置,还可以包含URL。
    1.如果未设置系统属性,ConfigurationFactory将查找的属性
    log4j2-test.properties的值。
    1.如果未找到此类文件,YAML配置工厂将查找
    类路径中的log4j2-test.yamllog4j2-test.yml
    1.如果未找到此类文件,JSON配置工厂将查找
    类路径中的log4j2-test.jsonlog4j2-test.jsn
    1.如果未找到此类文件,XML ConfigurationFactory将查找
    类路径中的log4j2-test.xml
    1.如果找不到测试文件,ConfigurationFactory属性将在类路径中查找log4j2.properties
    1.如果找不到属性文件,YAML ConfigurationFactory将在类路径中查找log4j2.yamllog4j2.yml
    1.如果找不到YAML文件,JSON配置工厂将在类路径中查找log4j2.jsonlog4j2.jsn
    1.如果无法找到JSON文件,XML ConfigurationFactory将尝试在类路径中找到log4j2.xml
    1.如果找不到配置文件,将使用DefaultConfiguration。这将导致日志输出转到控制台。
bxjv4tth

bxjv4tth4#

我没有任何错误
所以log4j正在查找您的配置,否则您将得到:
log4j:WARN找不到logger()的附加器。
log4j:警告请正确初始化log4j系统。
还有:
日志刚在控制台上打印出来
这就意味着你可能需要定义一个文件附加器,比如FileAppender或者RollingFileAppenderthe short intro的"配置"部分有一些例子。

6qftjkof

6qftjkof5#

您可以使用:

DOMConfigurator.configure(log4jConfigurationFilename);

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

ebdffaop

ebdffaop6#

不要担心把它放在哪里,只要运行你的项目,比如在eclipse中,log4j会抛出一个异常,告诉你它在哪里,然后你就可以把它放在那里了。
一旦你让它工作,你也会想出如何改变,因为你理解的逻辑。

相关问题