Linux 分卷日志管理实践
一、概念与总体思路
二、运行期分卷 logrotate 标准做法
/var/log/nginx/*.log {
daily
rotate 7
missingok
compress
delaycompress
create 0640 nginx adm
sharedscripts
postrotate
/bin/kill -USR1 $(cat /run/nginx.pid 2>/dev/null) 2>/dev/null || true
endscript
}
/opt/app/*.log {
size 100M
rotate 30
missingok
create 0644 app app
dateext
dateyesterday
dateformat -%Y-%m-%d
}
/usr/sbin/logrotate -f /etc/logrotate.conf/usr/sbin/logrotate -d /etc/logrotate.conf/var/lib/logrotate/status(排查“未按预期轮转”问题)。三、按小时轮转与定时集成
# /etc/cron.hourly/logrotate
/usr/sbin/logrotate /etc/logrotate.conf
5 * * * * /usr/sbin/logrotate -v /etc/logrotate.d/myapp >> /var/log/logrotate-myapp.log 2>&1
四、事后分卷处理已有大日志
split -b 100M app.log app.log.
split -l 100000 app.log app.log.
split -b 50M -d -a 3 app.log app.log.
cat app.log.* > app.log.recovered
md5sum app.log.recovered app.log && echo "OK" || echo "MISMATCH"
五、关键注意事项与最佳实践
-d 调试、-f 验证。