log4j2定期生成和删除过期日志文件的配置

删除过期文件有个坑,好多博文都说删除过期日志文件的配置通过max=数字控制.这是不对的这个只是控制某时间段内(根据配置不同)文件的数目.它并不会关心你的目录下一共有多少个日志文件了. 可想而知, 这样随着时间的推移, 虽然每个时间区间内日志数目控制在范围内, 但是, 总日志文件个数, 依然日益膨胀.


正确的应该如下:



   
    
        logs/kg
        kg
    
    
        
            
        
        
            
            
                      
                
            
            
                
                    
                    
                    
                    
                
            
        
    

    
        
        
        
        
            
            
        
        
            
            
        
    


注意:

  • filePattern定义的日志文件后缀精确的时间决定了定期生成日志文件. 精确到dd, 即%d{yyyy-MM-dd}, 则会每天生成一个文件, 精确到HH, 则会每时生成一个文件, ...
  • Delete标签内决定了删除过期文件的规则. 需要注意这里的IfLastModified .age要和filePattern精确的时间一致, 否则貌似无效.
    我这里日志文件会按日期放入子文件夹内, 所以要想统计总数, 需要递归统计, 故设置maxDepth=2.


然后贴一个比较常用的配置:



    
        info
    
    
        
        
            
            
        
        
        
            
            
            
                
                
                
                
            
            
            
                
                    
                    
                
                
                    
                
                
                    
                
            
        
        
            
        
    

    
        
            
            
        
        
        
    

如果想看详细的逻辑配置可以参考:https://www.jianshu.com/p/bfc182ee33db

这里面介绍的比较详细,比如一些删除策略的修改: RollingFileAppender 使用基于时间和文件大小的触发规则,每天最多生成 100 个归档日志文件,使用 gzip 压缩,存放在当前年月目录,每小时都会滚动。每次滚动都会删除匹配 */app-*.log.gz 、达到或超过 30 天的文件,但会保留最近 100 GB 的文件或最近的 1000 个文件(这两个条件哪个先满足就使用哪一个条件)。



  
    logs
  
  
    
      
      
        
        
      
      
        
        
          
            
              
                
                
              
            
          
        
      
    
  
  
    
      
    
  

 

你可能感兴趣的:(java,java,log4j2)