如何使用 rsyslog 一次丢弃多条消息?这不起作用,我无法找到有效的示例:
# Do not log any keepass and chmomium messages
if $programname == 'chromium.desktop' then /dev/null
if $programname == 'keepass2.desktop' then /dev/null
& stop
下面的解决方案有效,但在检查时显示错误rsyslogd -N1 -f <config_file>
rsyslogd: version 8.4.2, config validation run (level 1), master config /etc/rsyslog.d/00-discard.conf
rsyslogd: CONFIG ERROR: there are no active actions configured. Inputs will run, but no output whatsoever is created. [try http://www.rsyslog.com/e/2103 ]
rsyslogd: run failed with error -2103 (see rsyslog.h or try http://www.rsyslog.com/e/2103 to learn what that number means)
答案1
该行的& stop
意思是“重复前一个选择器”,并执行“停止”操作,停止对所选消息的进一步处理。因此,您需要将其放在每个if ...
选择行之后。但是,由于您的操作是写入/dev/null
,因此您也可以让第一行执行您想要的操作,即
if $programname == 'chromium.desktop' then stop
if $programname == 'keepass2.desktop' then stop
答案2
这里描述了另一种丢弃消息的方法:丢弃不需要的消息
只需检查“programname”属性,而不是像示例中那样检查“msg”属性。
:programname, contains, "chromium.desktop" ~
:programname, contains, "keepass2.desktop" ~