Ubuntu日志轮转策略全览
一 核心机制与触发条件
二 常用策略与关键参数
| 策略/参数 | 作用与说明 | 典型示例 |
|---|---|---|
| 时间触发 | 按固定周期轮转 | daily / weekly / monthly / yearly |
| 大小触发 | 文件达到阈值即轮转 | size 100M;可与时间条件“或”逻辑组合 |
| 保留数量 | 控制历史副本个数 | rotate 7(保留7个旧日志) |
| 压缩归档 | 节省磁盘空间 | compress;配合 delaycompress 常用于 syslog |
| 空文件处理 | 空日志不轮转 | notifempty |
| 缺失文件处理 | 日志缺失不报错 | missingok |
| 新建日志 | 轮转后创建新文件并设定权限属主 | create 0640 root adm |
| 复制后截断 | 避免重启应用,先复制再清空原文件 | copytruncate(适用于不便发信号的应用) |
| 轮转后通知 | 让进程重新打开日志文件 | postrotate … endscript(如向进程发送 HUP/USR1) |
| 日期后缀 | 以日期命名旧日志,便于追溯 | dateext;dateformat -%Y%m%d |
| 共享脚本 | 多个日志共享同一 postrotate | sharedscripts |
三 典型配置示例
/var/log/syslog {
weekly
rotate 52
compress
delaycompress
missingok
notifempty
create 0640 root adm
postrotate
/usr/lib/rsyslog/rsyslogd reload > /dev/null
endscript
}
/var/log/nginx/*.log {
daily
size 100M
rotate 30
compress
delaycompress
missingok
notifempty
create 0640 www-data adm
dateext
dateformat -%Y%m%d
sharedscripts
postrotate
nginx -s reopen
endscript
}
/var/log/myapp/*.log {
daily
rotate 7
compress
missingok
notifempty
copytruncate
create 0640 root adm
}
四 验证与运维要点