rsyslog stop命令复制消息而不是移动消息

时间:2020-01-15 08:58:28

标签: ubuntu rsyslog

在具有rsyslogd 8.32.0的Ubuntu 18.04上,

要从名为“ mqtt433”的服务中删除日志条目,我将以下内容添加到了/etc/rsyslog.d/50-default.conf:

if $programname == 'mqtt433' then {
    action(type="omfile" File="/var/log/mqtt433_log.log")
    stop
}

会创建文件/var/log/mqtt433_log.log并按预期将来自服务的日志消息附加到该文件。据我所知,它不应该这样做,而应该将行保留在默认文件(/ var / log / syslog)中。

换句话说,它应该移动消息到新文件,而不是复制它们。

我还尝试了旧规则语法,但结果相同。

:programname, isequal, "mqtt433" /var/log/mqtt433.log
& stop

我也尝试过时的语法

& ~

代替

& stop

没有运气。

我在做什么错了?

1 个答案:

答案 0 :(得分:1)

确保在读取任何其他规则之前已读取您的conf文件。例如,检查目录/etc/rsyslog.d/中没有较早的文件,并且在此时包含配置的rsyslog.conf行之前的$IncludeConfig /etc/rsyslog.d/*.conf中没有过滤规则。通常,规则放在## RULES ##注释之后,并按照出现的顺序执行。