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

使用 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

将以下内容放入正面该部分正确地将“命名”消息写入 /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 的行以不写出“命名”消息?

注意:这是 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"                          ~

答案1

如果您想进行一些通用处理但排除某些特定事件,使用否定会很有用。您可以结合使用丢弃操作。示例如下:

/var/log/allmsgs-包括-informational.log

:msg,包含,“信息性”〜

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

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

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

相关内容