消息日志未通过 logrotate 配置轮换

messages log is not rotated via logrotate config

我按照我在网上找到的一些说明通过旋转 aws ec2 实例来应用日志轮换,我发现在 /var/log/messages 上应用它的最简单方法是通过这种格式:

[root@ip-192-168-1-69 ~]# cat /etc/logrotate.d/messages 
/var/log/messages {
    daily
    create 0600 root root
    rotate 3
    size=1M
    compress
    delaycompress
    notifempty
}

我还不知道 logrotate 什么时候会发生,所以我在第二天检查了一下,看到了这个结果

[root@ip-192-168-1-69 ~]# ls -ltrh /var/log/messages*
-rw------- 1 root root   0 May 24 13:25 /var/log/messages
-rw------- 1 root root 16M May 25 06:09 /var/log/messages-20210510

它确实轮换了,但是我注意到新日志现在转到 /var/log/messages-20210510 而不是 /var/log/messages,并且在第 2 天和第 3 天检查没有发生 tgz 日志轮换。 /var/log/messages-20210510 仍然不断更新新日志。

我从 /etc/logrotate.d 看到了这个配置,我不确定这是否与我创建的配置冲突

[root@ip-192-168-1-69 ~]# cat /etc/logrotate.d/syslog 
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
    sharedscripts
    postrotate
        /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
    endscript
}

请分享我错过的地方并提出建议,在此先感谢

似乎从全局配置中添加了一些不需要的指令。我建议您使用您提到的配置手动轮换日志(使用以下命令)。它会清楚地告诉您您的配置是否按预期工作,以进一步调试问题。

$ sudo logrotate /etc/logrotate.d/messages

如果此命令也没有给您预期的输出,请尝试在底部的 /etc/logrotate.d/rsyslog 文件中添加以下配置。

/var/log/messages {
    daily
    create 0600 root root
    rotate 3
    size 1M
    compress
    delaycompress
    notifempty
}

现在再次尝试使用 logrotate 命令手动旋转日志。我觉得应该可以。

注意:不要忘记从 rsyslog 文件

中的常用配置中删除现有行 /var/log/messages