log4j升级到log4j2流程

  1. 最近项目组中遇到因为日志量较大影响性能,性能测试效果较差,原项目引用的是log4j,于是升级为log4j2

将升级过程记录下来: 

  1. 原来log文件注释:log4j升级到log4j2流程_第1张图片

2.新增log4j2引用

 

<dependency>  

            <groupId>org.slf4jgroupId>  

            <artifactId>jcl-over-slf4jartifactId>  

            <version>1.7.13version>

            <exclusions>

             <exclusion>

             <artifactId>slf4j-apiartifactId>

             <groupId>org.slf4jgroupId>

             exclusion>

            exclusions>

        dependency> 

        <dependency>  

            <groupId>org.apache.logging.log4jgroupId>  

            <artifactId>log4j-apiartifactId>  

            <version>2.4.1version>  

        dependency>  

        <dependency>  

            <groupId>org.apache.logging.log4jgroupId>  

            <artifactId>log4j-coreartifactId>  

            <version>2.4.1version>  

        dependency>  

          

        <dependency>  

            <groupId>org.apache.logging.log4jgroupId>  

            <artifactId>log4j-slf4j-implartifactId>  

            <version>2.4.1version>

        dependency>  

          

        <dependency>  

            <groupId>org.apache.logging.log4jgroupId>  

            <artifactId>log4j-webartifactId>  

            <version>2.4.1version>  

        dependency>  

          

        <dependency>  

            <groupId>org.apache.logging.log4jgroupId>  

            <artifactId>log4j-webartifactId>  

            <version>2.4.1version>  

        dependency>  

3.解除log4j的依赖(一定要把依赖删除干净)

maven.xml找到Dependency Hierarchy找到之前其他jar引用的所有lg4j相关包右键-Exclude Maven Artifact解除

4.添加log4j2.xml



 
        E:/Logs/log
       

   

   
       
            
                            onMismatch="DENY" />
             
           
       

        
                             filePattern="${LOG_HOME}/zip/log - %d{yyyy-MM-dd}.log.gz">
           
                 %5p [%t] %d{yyyy-MM-dd HH:mm:ss} (%F:%L) %m%n
           

           
               
               
                                      modulate="true" />
           

             
               
                                    onMismatch="DENY" />
           

       

     
 
   

   
       
           
           
           
       

   

5.web.xml修改

<context-param>

        <param-name>log4jConfigurationparam-name>

        <param-value>/WEB-INF/classes/log4j2.xmlparam-value>

context-param>

  <listener>

    <listener-class>org.apache.logging.log4j.web.Log4jServletContextListenerlistener-class>

listener>

<filter>

        <filter-name>log4jServletFilterfilter-name>

        <filter-class>org.apache.logging.log4j.web.Log4jServletFilterfilter-class>

    filter>

    <filter-mapping>

        <filter-name>log4jServletFilterfilter-name>

        <url-pattern>/*url-pattern>

        <dispatcher>REQUESTdispatcher>

        <dispatcher>FORWARDdispatcher>

        <dispatcher>INCLUDEdispatcher>

        <dispatcher>ERRORdispatcher>

   filter-mapping>

6.相关调用替换成Log logger = LogFactory.getLog(this.getClass());

7.activemq-all对log4j2的影响,如果你项目中引用了activemq-all会导致log4j2无效果,将其注释或则拆分引用。

之前因为activemq-all的问题导致log4j2没有效果,而且原因及其难排查。

8.异步功能的使用,如果使用log4j2但是不异步性能是提高不是很大,所以还是建议使用异步功能。

添加 <dependency> 

<groupId>com.lmaxgroupId>

 <artifactId>disruptorartifactId> 

<version>3.2.0version> dependency>

 

log4j2里面修改

<Loggers>

 <AsyncLogger name="你需要异步的包例如:com.xx" level="trace" includeLocation="true" additivity="false">

<appender-ref ref="STDOUT" />

<appender-ref ref="AppAppender" />

AsyncLogger>

<asyncRoot level="trace" includeLocation="true">

<appender-ref ref="STDOUT" />

asyncRoot>

全局异步就不说了因为也没去测试。

 

 

10.升级过后通过压测反应性能提升3倍,这个对企业应用来说已经是很大的提升了。

 

 

你可能感兴趣的:(【java】)