logback->log4j2迁移

本文介绍了将日志系统从logback迁移到log4j2的四个步骤:更新依赖,删除logback.xml并创建log4j2.xml配置文件,启用异步日志写入,以及修改日志工具类LogUtil。迁移过程中需注意在pom.xml中排除logback依赖,并在web.xml中配置log4j2。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

步骤一 剔除旧的依赖,引入新的依赖
主pom文件更改如下:

<log4j2.version>2.3</log4j2.version>
<disruptor.version>3.3.2</disruptor.version>
<!-- =================log4j2 relative configure=================== -->
<dependency>
   <groupId>org.apache.logging.log4j</groupId>
   <artifactId>log4j-api</artifactId>
   <version>${log4j2.version}</version>
</dependency>
<dependency>
   <groupId>org.apache.logging.log4j</groupId>
   <artifactId>log4j-core</artifactId>
   <version>${log4j2.version}</version>
</dependency>
<dependency>
   <groupId>org.apache.logging.log4j</groupId>
   <artifactId>log4j-slf4j-impl</artifactId>
   <version>${log4j2.version}</version>
</dependency>
<dependency>
   <groupId>org.apache.logging.log4j</groupId>
   <artifactId>log4j-web</artifactId>
   <version>${log4j2.version}</version>
</dependency>
<!-- disruptor relative configure -->
<dependency>
   <groupId>com.lmax</groupId>
   <artifactId>disruptor</artifactId>
   <version>${disruptor.version}</version>
</dependency>

如果不是web项目,可以无需添加<artifactId>log4j-web</artifactId>
另外,要使用异步写日志功能需添加disruptor,官方建议一般程序员查看的日志改成异步方式,一些运营日志改成同步,详情请见官方说明:
http://logging.apache.org/log4j/2.x/manual/async.html#UnderTheHood
原有logback依赖不要物理删除,用exclusion
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
<exclusion>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</exclusion>

步骤二 删除logback.xml 新增log4j2.xml
以IAPS为例

log4j2.xml配置如下

<?xml version="1.0" encoding="UTF-8"?>
<configuration status="WARN">
   <Properties>
      <Property name="LOG_HOME">/wls/applogs/rtlog </Property>
      <Property name="FILE_SIZE">300M</Property>
      <Property name="log_pattern">%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</Property>
      <Property name="rolling_file_name">-%d{yyyy-MM-dd}.%i.zip</Property>
      <Property name="rollover_strategy_max">30</Property>

      <Property name="LOG_HOME_BIZ">${LOG_HOME}/iapslogs/iaps-web/biz</Property>
      <Property name="LOG_HOME_ERROR">${LOG_HOME}/iapslogs/iaps-web/error</Property>
      <Property name="LOG_HOME_SERVICE">${LOG_HOME}/iapslogs/iaps-web/service</Property>
      <Property name="LOG_HOME_COMMON">${LOG_HOME}/iapslogs/iaps-web/common</Property>
        </Properties>
   <appenders>
      <Console name="Console" target="SYSTEM_OUT">
         <PatternLayout pattern="${log_pattern}" />
      </Console>
      <!-- biz log -->
      <!--<File name="bizRolling" fileName="${LOG_HOME_BIZ}/iaps-biz.txt" append="true">-->
         <!--<PatternLayout pattern="${log_pattern}"/>-->
      <!--</File>-->
      <RollingRandomAccessFile  name="bizRolling"
         fileName="${LOG_HOME_BIZ}/iaps-biz.txt"
         filePattern="${LOG_HOME_BIZ}/iaps-biz${rolling_file_name}"
         immediateFlush="false" append="true">
         <PatternLayout>
            <Pattern>${log_pattern}</Pattern>
            <Charset>UTF-8</Charset>
         </PatternLayout>
         <Policies>
            <SizeBasedTriggeringPolicy size="${FILE_SIZE}"/>
         </Policies>
         <DefaultRolloverStrategy max="${rollover_strategy_max}" />
      </RollingRandomAccessFile>

      <!-- service -->
      <RollingRandomAccessFile name="serviceRolling"
         fileName="${LOG_HOME_SERVICE}/iaps-service.txt"
         filePattern="${LOG_HOME_SERVICE}/iaps-service${rolling_file_name}"
         immediateFlush="false" append="true">
         <Filters>
            <ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="ACCEPT" />
         </Filters>
         <PatternLayout>
            <Pattern>${log_pattern}</Pattern>
            <Charset>UTF-8</Charset>
         </PatternLayout>
         <Policies>
            <SizeBasedTriggeringPolicy size="${FILE_SIZE}" />
         </Policies>
         <DefaultRolloverStrategy max="${rollover_strategy_max}" />
      </RollingRandomAccessFile>

      <!-- error -->
      <RollingRandomAccessFile name="errorRolling"
         fileName="${LOG_HOME_ERROR}/iaps-error.txt"
         filePattern="${LOG_HOME_ERROR}/iaps-error${rolling_file_name}"
         immediateFlush="false" append="true">
         <Filters>
            <ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="ACCEPT" />
         </Filters>
         <PatternLayout>
            <Pattern>${log_pattern}</Pattern>
            <Charset>UTF-8</Charset>
         </PatternLayout>
         <Policies>
            <SizeBasedTriggeringPolicy size="${FILE_SIZE}" />
         </Policies>
         <DefaultRolloverStrategy max="${rollover_strategy_max}" />
      </RollingRandomAccessFile>
      <!-- common -->
      <RollingRandomAccessFile name="iapsCommonRolling"
         fileName="${LOG_HOME_COMMON}/iaps-common.txt"
         filePattern="${LOG_HOME_COMMON}/iaps-common${rolling_file_name}"
         immediateFlush="false" append="true">
         <Filters>
            <ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="ACCEPT" />
         </Filters>
         <PatternLayout>
            <Pattern>${log_pattern}</Pattern>
            <Charset>UTF-8</Charset>
         </PatternLayout>
         <Policies>
            <SizeBasedTriggeringPolicy size="${FILE_SIZE}" />
         </Policies>
         <DefaultRolloverStrategy max="${rollover_strategy_max}" />
      </RollingRandomAccessFile>
   </appenders>

   <loggers>
      <AsyncLogger  name="paff.common" level="error"/>
      <AsyncLogger name="paff.aop" level="error"/>
      <AsyncLogger name="paff.sms" level="error"/>
      <AsyncLogger name="paff.email" level="error"/>
      <AsyncLogger name="com.pinganfu.pingamq" level="error"/>

<AsyncRoot  level="info">
         <appender-ref ref="Console"/>
         <appender-ref ref="bizRolling" />
         <appender-ref ref="errorRolling" />
      </AsyncRoot>
   </loggers>
</configuration>

具体异步配置请参见官方文档
http://logging.apache.org/log4j/2.x/manual/async.html
步骤三 在web.xml配置log4j2

<param-name>log4jConfiguration</param-name>
<param-value>log4j2.xml</param-value>

步骤四 修改LogUtil
以IAPS为例
Util的pom中添加

<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
</dependency>
<dependency>
   <groupId>org.apache.logging.log4j</groupId>
   <artifactId>log4j-core</artifactId>
</dependency>
<dependency>
   <groupId>org.apache.logging.log4j</groupId>
   <artifactId>log4j-slf4j-impl</artifactId>
</dependency>
<dependency>
   <groupId>com.lmax</groupId>
   <artifactId>disruptor</artifactId>
</dependency>

然后修改LogUtil

至此,迁移基本完成。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值