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 ##
评论之后,并按照它们出现的顺序执行。
在 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 ##
评论之后,并按照它们出现的顺序执行。