1、使用logrotate工具切割
[root@docker ~]# cd /etc/logrotate.d/
[root@docker logrotate.d]# vim nginx
输入一下内容:
# /var/log/nginx/*.log为nginx存放目录
/var/log/nginx/*.log {
daily
missingok # 忽略错误
rotate 52 # 最多保留多少个存档
compress # 切割后且压缩
delaycompress # 延迟压缩动作在下一次切割
notifempty # 日志为空就不切割
create 640 nginx adm # 切割的文件权限
sharedscripts # 共享脚本,结果为空
postrotate # 收尾动作,重新生成nginx日志
if [ -f /var/run/nginx.pid ]; then
#pid文件的路径
kill -USR1 `cat /var/run/nginx.pid`
fi
endscript
}
效果:
2、 使用脚本切割nginx日志
[root@docker shell]# vim nginx_log.sh
脚本内容:
#/bin/bash
yesterday=$(date +%Y-%m-%d) #取得服务器当前时间
savepath_log=' /opt/nginx/logs'#分割后的日志文件保存目录
nglogs='/opt/nginx/logs' #nginx日志文件目录
#判断分割日志保存目录是否存在不存在则创建
if [ ! -d ${savepath_log} ]
then
mkdir -p ${savepath_log}
fi
#通过mv命令将日志移动到分割后的日志目录里,然后发送kill -USR1信号给Nginx的主进程号,让Nginx重新生成一个新的日志文件。
mv ${nglogs}/access.log ${savepath_log}/access_${yesterday}.log #具体根据你的实际日志文件名路径 进行修改access.log名字
mv ${nglogs}/error.log ${savepath_log}/error_${yesterday}.log #具体根据实际日志文件名地址 修改error.log名字
mv ${nglogs}/host.access.log ${savepath_log}/host.access_${yesterday}.log
kill -USR1 $(cat /opt/nginx/logs/nginx.pid) #通知nginx重新生成新的日志
2.1、添加定时任务
[root@docker logs]# crontab -e
#输入以下定时任务记录
59 23 * * * /data/shell/nginx_log.sh