Nginx logrotate 日志切割
执行命令
!> 根据配置文件实际路径修改以下命令
shell
logrotate -d -f /etc/logrotate.d/nginx
# 调试模式测试是否有 error 错误
logrotate -f /etc/logrotate.d/nginx
# 执行
配置文件
?> 参考以下示例:
修改日志路径.
修改olddir
切割后存储路径.
如果定时计划0
点执行,还需要dateyesterday
参数自动命名前一天日期.
根据实际环境修改postrotate
命令热加载nginx
服务生成新日志文件.
dnmp 参考示例
shell
/root/dnmp/logs/nginx/*.log {
create 0664 root
olddir /root/backup/logs/nginx
dateyesterday
daily
dateext
rotate 10
missingok
notifempty
compress
sharedscripts
postrotate
docker exec nginx nginx -s reload
endscript
}
lnmp 参考示例
shell
/home/wwwlogs/*.log {
create 0664 root root
su root root
olddir /root/backup/logs/nginx
dateyesterday
daily
dateext
rotate 10
missingok
notifempty
compress
sharedscripts
postrotate
/bin/kill -USR1 `cat /usr/local/nginx/logs/nginx.pid 2>/dev/null` 2>/dev/null || true
endscript
}
计划任务
系统/etc/cron.daily
目录下的logrotate
脚本会在每天执行日志切割任务.
logrotate 读取/etc/logrotate.conf
主配置文件,以及/etc/logrotate.d/
中的配置文件.
可以在/etc/logrotate.d/
中创建nginx
配置文件来进行每日切割任务.
但是由于cron.daily
并不是每日0
点准时执行,如果需要精确按日切割日志,不要在以上/etc/logrotate.d/
目录中创建配置文件,选择其他目录创建nginx
配置文件,在由crontab
来定时执行计划任务.
crontab
参考示例
shell
0 0 * * * /usr/sbin/logrotate -f /your-config-path/nginx >/dev/null 2>&1
!> 再次提醒cron.daily
根据不同系统版本是在每日04
点左右执行,如果由crontab
来精确计划切割任务,则不要在/etc/logrotate.d/
目录中创建配置文件,避免重复切割任务.