【问题标题】:How to configure log4j.xml for migrating from log4j to log4j2? [duplicate]如何配置 log4j.xml 以从 log4j 迁移到 log4j2? [复制]
【发布时间】:2021-07-28 13:07:27
【问题描述】:

我正在开发一个使用 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>

需要对&lt;param&gt;&lt;layout&gt;&lt;RollinFileAppender&gt; 部分和&lt;logger name="auditLogger" additivity="false"&gt; &lt;appender-ref ref="applicationLoggerAppender" /&gt; &lt;/logger&gt; 进行哪些配置更改才能与 log4j 2 一起使用?

【问题讨论】:

    标签: java struts2 log4j log4j2


    【解决方案1】:

    在 Log4j2 中,XML 配置基本上有两个方面的变化:

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

    您的 appender 的简洁版本(参见 [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>
    

    您可以在javadocXSD schema 中找到所有配置属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-24
      • 2018-05-08
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多