本章节介绍如何轮转调试日志。
日志轮转概念: 日志轮转是一种日志管理机制,用于管理日志文件的大小和数量,避免日志文件过大占用过多磁盘空间。日志轮转会定期将当前日志文件重命名或移动,然后创建一个新的日志文件,旧的日志文件会被压缩或删除。
日志轮转原理:
日志轮转优势:
使用 logrotate 管理日志轮转:
sudo vim /etc/logrotate.d/nginx
/var/log/nginx/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
[ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
endscript
}
logrotate 配置说明:
daily:每天轮转一次missingok:如果日志文件不存在,不报错rotate 14:保留 14 个日志文件compress:压缩旧日志文件delaycompress:延迟压缩notifempty:如果日志文件为空,不轮转create 0640 www-data adm:轮转后创建新日志文件,设置权限和所有者sharedscripts:共享脚本postrotate:轮转后执行的脚本kill -USR1:发送 SIGUSR1 信号,重新打开日志文件# 重新打开日志
sudo nginx -s reopen
# 或使用信号
sudo kill -USR1 $(cat /var/run/nginx.pid)
手动轮转说明:
nginx -s reopen:重新打开日志文件kill -USR1:发送 SIGUSR1 信号,重新打开日志文件手动轮转原理:
/var/log/nginx/*.log {
size 100M
rotate 14
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
[ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
endscript
}
按大小轮转说明:
size 100M:当日志文件大小达到 100M 时轮转/var/log/nginx/*.log {
daily
rotate 14
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
[ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
endscript
}
按时间轮转说明:
daily:每天轮转一次weekly:每周轮转一次monthly:每月轮转一次