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

标签 java struts2 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(参见 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>

您可以在 javadoc 中找到所有配置属性或 XSD schema .

关于java - 如何配置 log4j.xml 以从 log4j 迁移到 log4j2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68560994/

相关文章:

java - 如何获取与 firebase 数据库中的特定值配对的随 secret 钥并删除该值?

java - Struts 2 和 Spring 如何处理 struts 创建的对象

java - Log4j 中的字符串连接性能

java - 为什么我的应用程序图标在 Android Studio 的应用程序网格列表中显示为空白?

Java 类型从字符串转换为整数

java - Spring Security 超时时将用户重定向到登录页面

javascript - 将 ArrayList 传递给 JQuery Flot

jquery - 结果重定向到 Struts 2 中的 jQuery 选项卡

java - 如何从 Tomcat 6 中的 Web 应用程序内部登录

java - 未找到 com.models.entities.OrderEntity 类型的属性