日志定期压缩、清除

1、背景

  • 定位问题:打印日志的一个目的是为了快速定位线上问题,日志打印的越详细,问题原因就越容易定位。
  •  磁盘空间有限:随着业务量提升,磁盘空间满了,日志将无法打印了。

为了平衡上面两个条件,我们可以压缩文件和保留一定时间(如7天)的历史文件。

2、日志压缩

我们使用的日志框架是logback,下面的配置也是以logback.xml为例

2.1 保留日志

2.1.1 配置



	
	${LOG_HOME:-c:/}logs/error/error.log
	
		
		
		
		${LOG_HOME:-c:/}logs/error/error-%d{yyyy-MM-dd}.%i.log
		
		7
		
		20GB
		
		true
		
		
			
			100MB
		
	
	
		
		[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %logger{36} - %msg%n
	
	
	
		ERROR
		ACCEPT
		DENY
	




	${LOG_HOME:-c:/}logs/all/all.log
	
		${LOG_HOME:-c:/}logs/all/all-%d{yyyy-MM-dd}.%i.log
		7
		20GB
		true
		
			100MB
		
	
	
		[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %logger{36} - %msg%n
	

2.1.2 cleanHistoryOnStart

        如果设置为true,则将在追加程序启动时执行归档删除。默认情况下,此属性设置为false。
通常在过渡期间执行归档删除。但是,某些应用程序的生存时间可能不足以触发翻转。因此,对于这种短暂的应用程序,归档删除可能永远不会有执行的机会。通过将cleanHistoryOnStart设置为true,将在附加程序启动时执行归档删除。

日志定期压缩、清除_第1张图片

 

2.2 压缩日志

fileNamePattern:后缀以".zip"或".gz"结尾,则开启日志文件压缩。




	${LOG_HOME:-c:/}logs/gz/all/all.log
	
		
		${LOG_HOME:-c:/}logs/gz/all/all-%d{yyyy-MM-dd}.%i.log.gz
		3600
		
			100MB
		
	
	
		[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %logger{36} - %msg%n
		
	



	${LOG_HOME:-c:/}logs/gz/error/error.log
	
		${LOG_HOME:-c:/}logs/gz/error/error-%d{yyyy-MM-dd}.%i.log.gz
		
		3600
		
			100MB
		
	
	
		[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %logger{36} - %msg%n
		
	
	
		ERROR
		ACCEPT
		DENY
	

 3、示例代码

share: 分享仓库 - Gitee.com

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