如何配置log4j.xml从log4j迁移到log4j2?



我正在使用log4j的应用程序,直到现在,我想迁移到log4j2。我是使用log4j 2的新手,指的是log4j 1.x migration guide,但对于某些部分,我不清楚log4j.xml中的配置应该如何。

当前log4j.xml文件如下所示:


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">

<!-- Appender for logging to console output  -->
<appender name="consoleAppender" class="org.apache.log4j.ConsoleAppender">
<param name="Threshold" value="debug" />
<layout class="org.apache.log4j.EnhancedPatternLayout">
<param name="ConversionPattern" value="[%d{dd-MMM-yyyy HH:mm:ss:SSS}][%5p][%c{1}:%L]- %m%n" />
</layout>
</appender>

<!-- Appender for logging audit messages to the file  -->
<appender name="auditLoggerAppender" class="org.apache.log4j.rolling.RollingFileAppender">
<param name="Threshold" value="debug" />

<rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
<param name="ActiveFileName" value="C:/logs/Filename.log" /> 
<param name="FileNamePattern" value="C:/logs/Filename2.%d.log" />   
<param name="MaxHistory" value="30" />  
</rollingPolicy>

<layout class="org.apache.log4j.EnhancedPatternLayout">
<param name="ConversionPattern" value="[%d{dd-MMM-yyyy HH:mm:ss:SSS}][%5p][%c{1}:%L]- %m%n" />
</layout>
</appender>

<!-- Logger for audit messages -->
<logger name="auditLogger" additivity="false">
<appender-ref ref="applicationLoggerAppender" />        
</logger>


</log4j:configuration>

需要对<param>,<layout>,<RollinFileAppender>部分和<logger name="auditLogger" additivity="false"> <appender-ref ref="applicationLoggerAppender" /> </logger>进行哪些配置更改才能使其与log4j 2一起工作?

在Log4j2中,XML配置基本上改变了两个方面:

  • 组件类型不是用类名来标识的,而是用插件名来标识的。例如,要创建RollingFileAppender(cf. javadoc),您将使用RollingFile而不是org.apache.logging.log4j.core.appender.RollingFileAppender
  • 组件的所有简单属性都指定为XML属性。

您的appender的简明版本(参见[简明和字符串XML配置])(https://logging.apache.org/log4j/2.x/manual/configuration.html#Configuration_with_XML)将是:

<RollingFile name="auditLoggerAppender"
fileName="C:logsFilename.log"
filePattern="C:logsFilename2.%d.log">
<PatternLayout pattern="[%d{dd-MMM-yyyy HH:mm:ss:SSS}][%5p][%c{1}:%L]- %m%n"/>
<ThresholdFilter level="DEBUG"/>
<TimeBasedTriggeringPolicy/>
<DefaultRolloverStrategy max="30"/>
</RollingFile>

记录器以类似的方式配置:

<Logger name="auditLogger" additivity="false">
<AppenderRef ref="auditLoggerAppender" />
</Logger>

您可以在javadoc或XSD模式中找到所有配置属性。

最新更新