本文详细介绍Linux系统中logrotate日志轮转工具的配置方法,包含实际应用场景示例、参数解析及最佳实践。通过合理的日志轮转配置,可有效管理日志文件大小,避免磁盘空间耗尽问题,同时保留历史日志便于审计。
一、logrotate 简介
logrotate是Linux系统自带的日志管理工具,通过自动化轮转、压缩和删除旧日志文件,帮助系统管理员解决日志文件不断增长的问题。它通过cron定时任务触发,支持按时间、文件大小等多种条件触发轮转。
二、核心配置文件
logrotate的主要配置文件位于:
/etc/logrotate.conf 全局默认配置
/etc/logrotate.d/ 应用专属配置目录
三、基础配置实例
以下是针对Nginx日志的典型配置示例(保存为/etc/logrotate.d/nginx
):
/var/log/nginx/.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
/usr/bin/systemctl reload nginx > /dev/null 2>&1 || true
endscript
}
参数说明:
- daily:每天轮转一次
- rotate 14:保留14个历史版本
- compress:使用gzip压缩旧日志
- delaycompress:延迟压缩前一个日志文件
- create:设置新日志文件的权限和属主
四、高级配置技巧
1. 按文件大小轮转
/var/log/tomcat/catalina.out {
size 100M
copytruncate
rotate 5
compress
}
2. 自定义时间戳命名
/var/log/myapp/.log {
weekly
dateext
dateformat -%Y%m%d
rotate 8
}
3. 多日志文件处理
/var/log/cluster/.log /var/log/nodes/.log {
monthly
rotate 6
sharedscripts
prerotate
/usr/bin/logger "Rotating cluster logs"
endscript
}
五、调试与测试
使用-d
参数测试配置(不实际执行):
logrotate -d /etc/logrotate.d/nginx
强制立即执行轮转:
logrotate -vf /etc/logrotate.d/nginx
六、最佳实践建议
- 为关键应用配置单独的轮转规则
- 生产环境建议使用
copytruncate
替代默认的创建新文件方式 - 对高频写入日志配置
size
而非时间触发 - 定期检查
/var/lib/logrotate/status
状态文件
评论