Linux 日志轮转 logrotate 配置实例

2025.5.29 杂七杂八 1068

Linux 日志轮转 logrotate 配置实例 杂七杂八-第1张

本文详细介绍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

六、最佳实践建议

  1. 为关键应用配置单独的轮转规则
  2. 生产环境建议使用copytruncate替代默认的创建新文件方式
  3. 对高频写入日志配置size而非时间触发
  4. 定期检查/var/lib/logrotate/status状态文件

评论