nginx日志切割和日志定期清理

nginx日志默认不做人为处理,日志文件会存放在access.log,error.log两个文件中,随着时间的推移,日志量会越来越大,不方便编辑查看,为了让日志按天存放,可以做一些配置,设置一个定时任务,每天凌晨00:00开始备份昨天的日志,然后重新开启一个新的日志文件。具体实现如下:

vi /root/nginx_logback.sh
#!/bin/bash
YESTERDAY=$(date -d "yesterday" +"%Y-%m-%d")
LOGPATH=/usr/local/openresty/nginx/logs/
PID=${LOGPATH}nginx.pid
mv ${LOGPATH}access.log ${LOGPATH}access-${YESTERDAY}.log
mv ${LOGPATH}error.log ${LOGPATH}error-${YESTERDAY}.log

kill -USR1 `cat ${PID}`
变更脚本为可执行文件,并将脚本作为定时任务启动脚本,放入crontab中。
chmod +x nginx_logback.sh
crontab -e

#!/bin/bash
0 0 * * * /bin/bash /root/nginx_logback.sh

日志按天存放,这样还有一个问题,经过三个月,或者更久,日志文件越来越多,这又是一个问题,所以需要对日志做定期清理,只保留一段时间内的日志。这里介绍一个开源日志清理框架Log-Cutter。log-cutter是用java语言开发的一个日志清理框架,他的文件结构如下:

nginx日志切割和日志定期清理_第1张图片

配置文件很容易理解



	
		
		0
		
		
		
		
		
		
	
	
	
	
	
		
		
		*.log*
		

主要的配置就在 中,中的配置可以忽略。这里只需要清理nginx日志,根据业务可以添加更多的清理日志。expire=7就是清理超过7天的日志,从当前日期往前推7天,7天之前的日志都会清理掉。

这里采用定时任务的方式执行,每天凌晨2:30执行一次。

执行的结果可以从Log-Cutter自己产生的日志中看。

nginx日志切割和日志定期清理_第2张图片

结果可以看出就保留了7天的日志,可以从nginx日志目录中做确认。

nginx日志切割和日志定期清理_第3张图片

你可能感兴趣的:(linux,nginx)