Nginx日志按天自动切割
Posted 刘元涛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx日志按天自动切割相关的知识,希望对你有一定的参考价值。
使用nginx做反向代理,代理了3台服务器,由于所有的访问都经过Nginx,发现access日志增长的很快,时间长了,日志文件难免会变得很大,打开查看很不方便,而且会影响服务器性能,因此有必要对nginx日志进行每日切割保存,减小文件大小,同时也更方便查看日志。
实现思路
shell脚本+定时任务+nginx信号控制,完成日志定时切割。
具体步骤
在需要保存日志或者是其他目录,新建一个shell脚本。
vim /usr/local/openresty/nginx/logs/log_rotate.sh
编辑内容如下:
#!/bin/bash
#安装目录下日志文件
base_log_path='/usr/local/openresty/nginx/logs/access.log'
base_error_path='/usr/local/openresty/nginx/logs/error.log'
#需要保存的目录位置
log_path='/data_lytdev_dir/nginx/logs/'
#获取月份
log_month=$(date -d yesterday +"%Y%m")
#获取前一天日期 (第二天凌晨备份,即保存的日志就是当天时间的日志)
log_day=$(date -d yesterday +"%d")
#在指定位置创建文件夹
mkdir -p $log_path/$log_month
#将安装目录下的日志文件,移动到指定存储位置
mv $base_log_path $log_path/$log_month/access_$log_day.log
mv $base_error_path $log_path/$log_month/error_$log_day.log
#再使用信号控制切割日志
#USR1 表示nginx信号控制,切割日志
kill -USR1 `cat /usr/local/openresty/nginx/logs/nginx.pid`
#每天凌晨1点切割日志
* 1 * * * /usr/local/openresty/nginx/logs/log_rotate.sh
赋予脚本可执行权限:
chmod u+x log_rotate.sh
执行测试:
./log_rotate.sh
发现备份的目录有日志文件,并且原来的access.log变的很小,说明脚本执行成功。
图片
设置定时任务:
crontab -e
添加如下内容:
#每天凌晨1点切割日志
* 1 * * * /usr/local/openresty/nginx/logs/log_rotate.sh
大功告成,日志按天自动切割的功能就完成了!
以上是关于Nginx日志按天自动切割的主要内容,如果未能解决你的问题,请参考以下文章