核心是控制保留天数、自动压缩与及时清理,7天为常用起点;rotate N 控制轮转文件数量而非精确天数;compress 与 delaycompress 可降磁盘占用60%–80%;postrotate 中需用 USR1 信号重开日志并校验 pid 路径;dateext、olddir、minsize、sharedscripts 等增强策略提升健壮性。
核心是控制保留天数+自动压缩+及时清理,7天是兼顾排查需求与磁盘压力的常用起点,但需根据合规要求和业务量动态调整。
logrotate 的 rotate N 参数直接决定保留几份历史日志。例如:
注意:rotate 数值不是“保留N天”,而是“最多保留N个轮转文件”。若某天无新日志,不会生成新文件,实际保留天数可能略多于N。
未压缩的日志体积大、IO高。加这两行能减少60%–80%磁盘占用:
不压缩时,1GB access.log 切割7次就是7GB;压缩后通常只剩200–300MB。
切割后若 Nginx 继续往旧文件句柄写入,会导致磁盘不释放、新日志丢失。关键动作在 postrotate:
/var/run/nginx.pid 或 /usr/local/nginx/logs/nginx.pid,路径错则信号失效[ -f ... ] && 判断可避免因 pid 不存在导致脚本报错中断让策略更健壮、更贴合实际运维习惯:
/var/log/nginx/backup),避免和当前日志混在一起