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

rsyslog stop command copies messages instead of moving

在 Ubuntu 18.04 上,rsyslogd 8.32.0,

为了从名为“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

运气不好。

我做错了什么?

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