我找到了一些使用 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
& ~