Log4j 2 不再支持 log4j.properties 文件了吗?

2022-09-01 14:13:36

我正在使用log4j 2.0-rc1和file运行一个示例,但是log4j lib总是使用默认配置(日志级别,追加器等)运行它。我也尝试将名称更改为,但没有任何反应。log4j.propertieslog4j2.properties


答案 1

Log4j 2 不再支持 Log4j v1 “.properties” 格式(但是,由于 v2.4,Log4j 支持属性格式,但其语法与 v1 格式完全不同)。新格式是XML,JSON和YAML,请参阅文档(注意:如果您在名为“.properties”的文件中使用了这些格式之一,则可能会令人困惑)。

要指定配置文件的位置,是使用系统属性 、Log4j 类 还是其他名称?您是否阅读了此手册页?它解释了:尽管Log4j 2配置语法与Log4j 1.x的语法不同,但大多数(如果不是全部)相同的功能都可用。log4j.configurationFileConfigurationFactory

因此,似乎不支持旧版Log4j1.x文件,必须将其迁移到v2.x格式。不过,迁移似乎很容易,看看我上面给出的链接中的示例。这是一个摘录:log4j.properties

Log4j v1.x 配置文件的示例:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd">
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>
    <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
        </layout>
    </appender>
    <category name="org.apache.log4j.xml">
        <priority value="info" />
    </category>
    <Root>
        <priority value ="debug" />
        <appender-ref ref="STDOUT" />
    </Root>
</log4j:configuration>

迁移到 Log4j v2 的相同配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
    <Appenders>
        <Console name="STDOUT" target="SYSTEM_OUT">
            <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
        </Console>
    </Appenders>
    <Loggers>
    <Logger name="org.apache.log4j.xml" level="info"/>
        <Root level="debug">
            <AppenderRef ref="STDOUT"/>
        </Root>
    </Loggers>
</Configuration>

答案 2

从版本 2.4 开始,Log4J2 现在再次支持 .property 文件。有关属性配置,请参阅文档中的此处。

使用属性进行配置

从版本2.4开始,Log4j现在支持通过属性文件进行配置。请注意,属性语法与 Log4j 1 中使用的语法不同。与 XML 和 JSON 配置一样,属性配置根据插件和插件的属性来定义配置。


推荐