log4j2 + slf4j 项目实践

End of Life On August 5, 2015 the Logging Services Project Management 
Committee announced that Log4j 1.x had reached end of life. For 
complete text of the announcement please see the Apache Blog. Users of 
Log4j 1 are recommended to upgrade to Apache Log4j 2. 
是的,log4j停止于1.x版本,迎来了log4j 2,也就是我们今天要说的log4j 2.

Log4j 1.x 在高并发情况下出现死锁导致cpu使用率异常飙升
Log4j2.0基于LMAX Disruptor的异步日志在多线程环境下性能会远远优于Log4j 1.x和logback(官方数据是10倍以上)

使用slf4j门面模式调用:
import  org.slf4j.Logger;
import  org.slf4j.LoggerFactory;

private static final Logger logger = LogManager.getLogger(TestLog4j2Application.class);
logger.info(...);
logger.warn(...);
logger.error(...);

 

项目原来是使用log4j + slf4j 使用的,打印日志都是使用slf4j这个门面模式。改造起来比较轻松,不需要改动代码。

看了许多论坛的文章,自己整理了一份,比较适合项目的配置。

web项目,pom.xml配置:

        
        
            org.apache.logging.log4j
            log4j-api
            2.9.1
        
        
            org.apache.logging.log4j
            log4j-core
            2.9.1
        
        
        
            org.apache.logging.log4j
            log4j-web
            2.9.1
        
        
        
            org.apache.logging.log4j
            log4j-slf4j-impl
            2.9.1
        
        
        
            org.slf4j
            slf4j-api
            1.7.25
        
        

 

resources 下 log4j2.xml 配置






    
        
        ${sys:catalina.home}/logs/aglog
        
        %d{yyyy-MM-dd HH:mm:ss:SSS} [%t] %p %C:%L - %m%n
        
        50MB
        
        20
    

    
        
            
            
            
        
        
        
        
            
            
                
                
            
            
            
                
                
            
            
        
        
        
            
            
                
                
            
            
            
                
                
            
            
        
        
        
            
            
            
            
                
                
            
            
        
    

    
        
        
        

        
            
            
            
            
            
        
    

 

关于压缩文件格式log4j2对 gz的格式,比zip的 支持要好:

有趣的现象,我测试时使用的文件size上限10KB,数量最多10个。

当超出数量,覆盖时。zip的名称与内部log名称不同,好几个文件解压后名称都是一样的。而gz不会有这种情况。

log4j2 + slf4j 项目实践_第1张图片

log4j2 + slf4j 项目实践_第2张图片

 

gz的压缩后占用更小:

log4j2 + slf4j 项目实践_第3张图片

 

 

 

你可能感兴趣的:(Java)