一、通过linux自带的logrotate实现
进入/etc/logrotate.d/,创建nginx
vi /etc/logrotate.d/nginx
编写的脚本如下:
/usr/local/nginx/logs/*.log{
daily
rotate 15
minsize 10M
sharedscripts
postrotate
sudo service nginx reload>/dev/null 2>&1
endscript
}
注:
- /usr/local/nginx/logs/*.log 日志存放目录
- daily 日志按天分割
- rotate 最多保留15份
- 10m以下的不处理
reload nginx
,防止日志不写到新的文件中
然后执行sudo /usr/sbin/logrotate /etc/logrotate.conf
重新加载
二、通过shell脚本+crontab定时任务自动扫描
shell 脚本如下:
#获取日期 特别注意 “`”这个符号是esc键下,tab键上面,1旁边的在英文状态下的输入。
file_name=`date +%Y%m%d`
#文件移动并重命名
mv "/usr/local/nginx/logs/access.log" "/usr/local/nginx/logs/access"$file_name".log"
#nginx 日志重新打开
./nginx -s reopen
特别注意:date 前面的符合,我因为这个符合折腾了好久。
我上面的脚本是放在nginx安装目录的sbin目录下面。
然后通过crontab配置每天跑的定时,就可以搞定了。