首页 > 代码库 > log4j升级到logback

log4j升级到logback

虽然现在log4j已经基本上不更新很久了,但实际上升级log4j到logback最大的难度并不在于本身的替换,而是现有大量的三方jar依然使用log4j,以至于无法100%的exclude掉,所以很有可能是无法做到纯粹将log4j升级到logback的。在我们的很多系统中,就如此。

如果是使用slf4j作为facade的话,是可以无缝的升级的,但是如果直接使用了Log4j中的类,恐怕就无能为力了。

maven依赖:

           <dependency>
              <groupId>ch.qos.logback</groupId>
              <artifactId>logback-classic</artifactId>
              <version>1.1.11</version>
              <type>jar</type>
           </dependency>

logback的配置和log4j基本相同,只不过名字叫做logback.xml。

<?xml version="1.0" encoding="UTF-8"?>  
  
<configuration>  
     <property name="APP_Name" value="cptIdeUI" />     
     <contextName>${APP_Name}</contextName>    
  
 <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">  
  <layout class="ch.qos.logback.classic.PatternLayout">  
   <pattern>[%d{yyyyMMdd HH:mm:ss-SSS}] %-5level [%thread][%logger:%line]- %msg%n</pattern>  
  </layout>  
  <!-- <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>INFO</level>   
   </filter> -->  
 </appender>  
   
 <appender name="SIFT" class="ch.qos.logback.classic.sift.SiftingAppender">  
  <discriminator>  
   <key>filename</key>  
   <DefaultValue>c:/test</DefaultValue>  
  </discriminator>  
  <sift>  
   <appender name="FILE"  
    class="ch.qos.logback.core.rolling.RollingFileAppender">  
    <file>C:/test.log</file>  
    <prudent>false</prudent>  
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  
     <FileNamePattern>${filename}-%d{yyyyMMdd}.%i.log.gz</FileNamePattern>  
     <maxHistory>30</maxHistory>  
     <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">  
      <maxFileSize>20MB</maxFileSize>  
     </timeBasedFileNamingAndTriggeringPolicy>  
    </rollingPolicy>  
    <layout class="ch.qos.logback.classic.PatternLayout">  
     <ImmediateFlush>false</ImmediateFlush><!-- 缓存 -->  
     <pattern>[%d{yyyyMMdd HH:mm:ss.SSS}] %-5level [%thread][%logger:%line]- %msg%n</pattern>  
    </layout>  
   </appender>  
  </sift>  
 </appender>  
    
 <!--  过滤第三方日志-->  
 <logger name="org.apache.cxf" level="error"/>  
   
 <!-- 开发环境level设置为ALL打印和记录所有日志,生成环境建议修改为ERROR或WARN避免产生大量日志 -->  
 <root level="debug">  
  <appender-ref ref="SIFT"></appender-ref>  
  <appender-ref ref="STDOUT"></appender-ref>  
 </root>  
   
</configuration> 

logback.xml的完整指南参考https://logback.qos.ch/manual/configuration.html。

web.xml中的配置:

<context-param>  
    <param-name>logbackConfigLocation</param-name>  
    <param-value>classpath:logback.xml</param-value>  
</context-param> 

 

log4j升级到logback