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

ema*_*ell 25 java log4j log4j2

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

xav*_*xav 26

Log4j 2不再支持Log4j v1".properties"格式(但是,自v2.4起,Log4j支持Property格式,但其语法与v1格式完全不同).新格式是XML,JSON和YAML,请参阅文档(注意:如果您在名为".properties"的文件中使用其中一种格式,则可能会令人困惑).

要指定配置文件的位置,是使用系统属性log4j.configurationFile,Log4j类ConfigurationFactory还是其他内容?你读过这本手册吗?它解释说: 虽然Log4j 2配置语法与Log4j 1.x的语法不同,但大多数(如果不是全部)具有相同的功能.

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

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>
Run Code Online (Sandbox Code Playgroud)

相同的配置文件迁移到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>
Run Code Online (Sandbox Code Playgroud)

  • Log4j 2现在支持.properties格式:https://logging.apache.org/log4j/2.0/manual/configuration.html#Properties (2认同)

小智 12

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

使用属性配置

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

  • 请小心读者,如本回答文档摘录中所述,在此文件中使用的格式与Log4j v1中的格式不同(我经常收到评论,我的答案是错误的,这是正确的) (4认同)