Logrotate本身并不直接通过命令行参数来切割日志文件,而是通过配置文件来定义切割规则。以下是如何配置Logrotate进行日志文件分割的步骤和一些具体的配置指令:

  1. 编辑配置文件: Logrotate的主配置文件通常是/etc/logrotate.conf,但你也可以在/etc/logrotate.d/目录下创建额外的配置文件来处理特定服务的日志。
  2. 配置指令: 在配置文件中,你可以使用以下指令来定义日志文件的处理规则:
  • rotate: 定义日志文件旋转的次数。例如,rotate 7表示保留最近7个版本的日志文件。
  • dailyweeklymonthly: 设置日志旋转的周期。例如,daily表示每天进行一次日志旋转。
  • size: 根据文件大小来旋转日志。例如,size 1M表示当文件达到1MB大小时进行旋转。
  • compress: 旋转后的日志文件会被压缩。
  • delaycompress: 延迟压缩,即新创建的日志文件不立即压缩,直到下次旋转时才压缩。
  • missingok: 如果日志文件不存在,则跳过该文件,不会报错。
  • notifempty: 即使日志文件为空也进行旋转。
  • postrotate: 执行旋转后的一系列命令,例如重启服务以使其开始写入新的日志文件。
  • endscript: 结束postrotateprerotate脚本。
  1. 配置文件示例: 下面是一个简单的Logrotate配置文件示例:
  • /etc/logrotate.conf:主配置文件
  • /etc/logrotate.d/:为配置相关子系统,用于隔离每个应用配置(Nginx、PHP、Tomcat...)
/var/log/nginx/*.log {
    daily //指定轮转周期:默认每周切割weekly、每月切割monthly、每天切割daily、每年切割yearly
      size 100M //当日志文件到达指定的大小时转储,log-size单位bytes(缺省)及KB (sizek)或MB(sizem)
    rotate 14 //默认保留4个日志文件
    compress //通过gzip压缩转储后的日志文件
    missingok //若日志丢失不报错
    noolddir //转储后的日志文件和当前日志文件放在同一个目录下
  	copytruncate //用于还在打开中的日志文件,把当前日志备份并截断;是先拷贝再清空的方式,拷贝和清空之间有一个时间差,可能会丢失部分日志数据
    dateext //使用当期日期作为命名格式
    dateformat .%d-%s //配合dateext使用,紧跟在下一行出现,定义文件切割后的文件名,必须配合dateext使用,只支持 %Y %m %d %s 这四个参数
    notifempty
    postrotate
        /etc/init.d/nginx -s reload > /dev/null
    endscript
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  1. 测试和运行Logrotate
  • 使用-d选项来测试配置文件是否有语法错误:logrotate -d /etc/logrotate.conf
  • 使用-f--force选项强制运行logrotate,即使日志文件未达到旋转条件:logrotate -f /etc/logrotate.conf
  1. Crontab调度: Logrotate通常由cron作业定期执行。你可以检查/etc/crontab/etc/cron.daily/目录下的相关条目,确认logrotate是否已经设置了定期运行。
    按分钟级配置文件
    logrotate不支持分钟级分割,可通过定时任务执行分割
    例:*/1 * * * * root logrotate -f /etc/logrotate.conf

请确保在修改任何配置文件之前备份原始文件,并在修改后测试配置的有效性,以避免意外中断日志记录过程。