【问题标题】:rsyslog stop command copies messages instead of movingrsyslog stop 命令复制消息而不是移动
【发布时间】:2020-05-02 00:19:50
【问题描述】:

在带有 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

没有运气。

我做错了什么?

【问题讨论】:

  • 确保您的 conf 文件在任何其他规则之前被读取。例如检查/etc/rsyslog.d/ 中没有更早的文件,并且$IncludeConfig /etc/rsyslog.d/*.conf 行之前的rsyslog.conf 中没有过滤规则。
  • 天哪,它有帮助!我将这些行移到配置文件的开头,它可以工作!不知道有多少天我一直在阅读 rsyslog 文档并一直在寻找解决方案。请将您的评论作为答案,以便我标记它!

标签: ubuntu rsyslog


【解决方案1】:

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

【讨论】:

  • 澄清一下,以帮助未来的读者:默认情况下,在 Ubuntu 18.04 上,/etc/rsyslog.conf 包含 $IncludeConfig /etc/rsyslog.d/*.conf 并且只有一个名为 /etc/rsyslog.d/50-default.conf 的配置文件,而该配置文件又包含一个*.*;auth,authpriv.none -/var/log/syslog 文件第二行的规则。因此,尽管没有像 ## RULES ## 评论或任何东西这样的视觉线索,但在 *.* 过滤器之后放置任何 stop 命令什么都不做。有帮助的是重命名要在 50-default.conf 文件之前读取的自定义规则文件,在我的情况下为 01-mqtt433.conf
猜你喜欢
  • 1970-01-01
  • 2021-07-25
  • 2017-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多