我正在使用log4j 2.0-rc1和log4j.properties
文件运行一个示例,但是log4j lib总是使用默认配置(日志级别,appender等)运行它。我也尝试将名称更改为log4j2.properties
,但没有任何反应。
答案 0 :(得分:26)
Log4j 2不支持Log4j v1" .properties"格式化了(但是,从v2.4开始,Log4j支持属性格式,但其语法为totally different from v1 format)。新格式是XML,JSON和YAML,请参阅the documentation(注意:如果您在名为" .properties"的文件中使用了其中一种格式,则可能会造成混淆)。
要指定配置文件的位置,是使用系统属性log4j.configurationFile
,Log4j类ConfigurationFactory
还是其他?
你看过this manual page了吗?它解释说:
虽然Log4j 2配置语法与Log4j 1.x的语法不同,但大多数(如果不是全部)相同的功能都可用。
因此,似乎不支持传统的Log4j1.x log4j.properties
文件,必须将其迁移到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>
将相同的配置文件迁移到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>
答案 1 :(得分:10)
从版本2.4开始,Log4J2现在再次支持.property文件。请参阅property configuration的文档。
使用属性配置
从版本2.4开始,Log4j现在支持通过属性文件进行配置。请注意,属性语法与Log4j中使用的语法不同1.与XML和JSON配置类似,属性配置根据插件的插件和属性定义配置。
答案 2 :(得分:2)
Log4j 2使用新的配置文件格式。您需要使用XML(默认),JSON(带有其他库),甚至YAML(再次,库)。查看the documentation。