如何配置 log4j.xml 从 log4j 迁移到 log4j2?
How to configure log4j.xml for migrating from log4j to 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 配置中基本上有两个方面的变化:
- 组件类型不是使用它们的 class 名称来识别的,而是使用它们的插件名称来识别的。例如。要创建
RollingFileAppender
(参见 javadoc),您将使用 RollingFile
而不是 org.apache.logging.log4j.core.appender.RollingFileAppender
、
- 组件的所有简单属性都指定为 XML 属性。
你的 appender 的简洁版本(cf. [concise and string XML config])(https://logging.apache.org/log4j/2.x/manual/configuration.html#Configuration_with_XML)将是:
<RollingFile name="auditLoggerAppender"
fileName="C:\logs\Filename.log"
filePattern="C:\logs\Filename2.%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 or the XSD schema.
中找到所有配置属性
我正在开发一个直到现在才使用 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 配置中基本上有两个方面的变化:
- 组件类型不是使用它们的 class 名称来识别的,而是使用它们的插件名称来识别的。例如。要创建
RollingFileAppender
(参见 javadoc),您将使用RollingFile
而不是org.apache.logging.log4j.core.appender.RollingFileAppender
、 - 组件的所有简单属性都指定为 XML 属性。
你的 appender 的简洁版本(cf. [concise and string XML config])(https://logging.apache.org/log4j/2.x/manual/configuration.html#Configuration_with_XML)将是:
<RollingFile name="auditLoggerAppender"
fileName="C:\logs\Filename.log"
filePattern="C:\logs\Filename2.%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 or the XSD schema.
中找到所有配置属性