在具有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
没有运气。
我在做什么错了?
答案 0 :(得分:1)
确保在读取任何其他规则之前已读取您的conf文件。例如,检查目录/etc/rsyslog.d/
中没有较早的文件,并且在此时包含配置的rsyslog.conf
行之前的$IncludeConfig /etc/rsyslog.d/*.conf
中没有过滤规则。通常,规则放在## RULES ##
注释之后,并按照出现的顺序执行。