• 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> 
  • 相关阅读:
    对于在git上面拉代码报"error: RPC failed; curl 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054"解决方法
    在vue项目中如何添加eslint
    vscode编辑如何保存时自动校准eslint规范
    css3动画
    JS中的深拷贝与浅拷贝
    JS中的防抖与节流
    金三银四求职季,前端面试题小梳理(HTML、CSS、JS)
    正则表达式元字符大整理
    常规正则表达式练习,一起来开心的掉发吧
    关于子元素的margin-top对父级容器无效
  • 原文地址:https://www.cnblogs.com/zhjh256/p/6920743.html
Copyright © 2020-2023  润新知