Nginx日志需通过logrotate实现标准化生命周期管理:daily切割、rotate 30保留、compress延迟压缩、create设权限、postrotate发USR1信号;采集器应监听.gz归档文件,配合dateext时间戳与统一rotate/maxage策略保障跨环境一致性。
要让 Nginx 日志真正纳入统一的日志生命周期管理,关键不是“切完就扔”,而是把切割、压缩、保留、清理、通知等环节串成一条自动运转的链路。logrotate 是最成熟、最轻量、也最贴合 Linux 生态的选择,它天然支持与系统级日志管理体系(如 rsyslog、journalctl 的归档策略,或 ELK/Splunk 的摄入节奏)对齐。
在 /etc/logrotate.d/nginx 中定义完整策略,覆盖从切割到清理的全过程:
/etc/cron.daily/logrotate 驱动),确保时间粒度统一如果使用 ELK、Loki 或阿里云 SLS 等平台采集日志,需注意:
*.log.gz),而非实时写入中的 access.log,避免重复或截断postrotate 脚本末尾加入推送命令,例如:curl -X POST http://log-collector/api/v1/ingest?file=${LOGFILE}.gz,实现归档即上报
dateext 和 dateformat %Y%m%d 生成带标准时间戳的文件名(如 access.log-20260820),便于平台按日期自动分区、索引和冷热分层容器化或混合部署时,仍可复用同一套 logrotate 逻辑:
/var/log/nginx 目录为卷,直接管理其日志文件rotate N 和 maxage M(如 maxage 90 表示日志最长保留 90 天),确保审计合规性一致