rsyslog 根据消息内容和功能进行过滤

rsyslog 根据消息内容和功能进行过滤

我找到了一些使用 rsyslog 根据日志条目内容进行过滤的示例。但是有没有办法做到这一点,使其仅过滤特定设施的内容?例如:

if local0.* msg contains "foo"

但是使用真正的语法,而不是我刚刚编造的语法。

答案1

您需要执行两个连续的过滤器,而不是在一行上执行两个过滤器。

:msg, contains, "some-text"
if $syslogfacility-text == "facility" then /var/log/somelog.log
~

编辑:

我收回刚才的话。我现在已经看到这两种方法都适用。我刚刚在 rsyslog Wiki 中找到了应该可以改编的这个示例。

if $programname == 'popa3d' and $syslogseverity <= '6' then /var/log/popa3d.log

您当然会将您的条件代入示例中。

if $syslogfacility-text == 'local0' and $msg contains 'some-text' then /var/log/somelog.log
& ~

Rsyslog 维基
Rsyslog 文档

相关内容