每日 logrotate 不保留旧日志

每日 logrotate 不保留旧日志

在 CentOS 6.x 上,我创建了一个名为的简单服务logtraffic,该服务在启动时会将命令的输出附加tcpdump到日志文件中/var/log/logtraffic/logtraffic.log

我想针对该日志实现以下目标:

  • 每天午夜轮换该日志

  • 保留最新的 7 条日志并删除较旧的日志

为此,我做了以下工作:

  • 从 /etc/anacrontab 中注释掉以下行

1 5 cron.daily nice run-parts /etc/cron.daily

  • 添加了以下 cron 作业: @midnight /etc/cron.daily/logrotate

  • /etc/logrotate.d/logtraffic创建了内容如下的文件:

/var/log/logtraffic/*log {
    daily
    rotate 7
    create
    dateext
    missingok
    notifempty
    sharedscripts
    postrotate
        /sbin/service logtraffic restart > /dev/null 2>/dev/null || true
    endscript
}

看起来日志在午夜被正确截断,因为 logtraffic.log 中显示的时间戳证明了这一点。

问题是该文件夹中没有其他旧日志文件。我原本以为会有带有 YYYYMMDD 后缀的旧日志,但实际上没有。

我究竟做错了什么?

答案1

/etc/logrotate.d/logtraffic我终于设法解决了这个问题。我用以下代码更改了内容:

/var/log/logtraffic/*log {
    daily
    rotate 7
    create
    dateext
    missingok
    notifempty
    sharedscripts
    prerotate
        /sbin/service logtraffic stop > /dev/null 2>/dev/null || true
    endscript
    postrotate
        /sbin/service logtraffic start > /dev/null 2>/dev/null || true
    endscript
}

我仍然不明白为什么它不能与我之前的设置一起工作,但至少现在已经修复了。

相关内容