使用rsyslog将绑定/命名日志消息写入不同的文件

现在,控制处理指定日志消息的/etc/rsyslog.conf的内容如下所示:

# Log anything (except mail) of level info or higher. # Don't log private authentication messages! *.info;mail.none;authpriv.none;cron.none;;kern.none /var/log/messages 

将下面的内容放在该部分的前面 ,可以正确地将“named”消息写入/var/log/named/named.log。

 # Write named/bind messages to their own log file :programname, isequal, "named" /var/log/named/named.log 

问题是那些“已命名”的消息仍然被写出到/ var / log / messages文件中。 我将如何修改生成/ var / log / messages以不写出“named”消息的行?

注意:这是RHEL / CentOS 6附带的rsyslog v5。

附录:从下面接受的答案是

 # Write named/bind messages to their own log file, then discard (tilde) :programname, isequal, "named" /var/log/named/named.log :programname, isequal, "named" ~ 

如果您想要进行一些通用处理但排除某些特定事件,则使用否定可能很有用。 您可以结合使用丢弃操作。 样本将是:

/var/log/allmsgs-including-informational.log

:味精,包含“信息”〜

/var/log/allmsgs-but-informational.log

不要忽略第2行的红色波浪线! 在这个例子中,所有的消息都被写入文件allmsgs-including-informational.log。 然后,包含string“信息”的所有消息都被丢弃。 这意味着“丢弃行”下方的configuration文件行(我们示例中的编号2)将不会应用于此消息。 然后,所有剩余的行也将写入文件allmsgs-but-informational.log。

http://www.rsyslog.com/doc/rsyslog_conf_filter.html