我正在运行 CentOS6,我配置了 rsyslog 来监控我的 iptables 警告消息并将它们转储到 中/var/log/iptables.log
。我浏览了我的logrotate.d/syslog
文件并添加了iptables.log
logrotate 来拾取和轮换日志。该文件如下所示:
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
/var/log/iptables.log
{
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}
但是,当我运行logrotate -f -v logrotate.conf
以触发强制滚动时,iptables.log 文件不会滚动。为了使 logrotate 不会对 iptables 文件产生影响,我创建了一个iptables.log-20121014
文件。
我运行该命令时的输出如下:
rotating log /var/log/iptables.log, log->rotateCount is 4
dateext suffix '-20121021'
我不知所措。如何让 logrotate 滚动文件?我不能 100% 确定我是否配置正确,但我不知道是否如此。
答案1
我相信更有效的解决方案是实际为 iptables 创建一个特定的 logrotate 实例,而不是将其直接添加到 syslog logrotate 实例中。
通过以下方式实现:
$ touch /etc/logrotate.d/iptables
现在,按照你的需要配置 logrotation,示例如下(你可以找到所有选项这里 (logrotate.conf):
$ vi iptables
/var/log/iptables.log {
missingok
notifempty
size 30k
create 0600 root root
postrotate
/etc/rc.d/init.d/rsyslog restart ; sleep 5
endscript
}
这应该提供您正在寻找的功能。