如何通过标签过滤rsyslog消息


12

我有几个应用程序和脚本,我想将输出重定向到自定义文件。

我使用启动这些应用程序

command | logger -t TAG

我想根据它们的标签过滤这些消息,然后将它们重定向到其他文件。我不想使用bash重定向,因为那些应用程序主要是长时间运行的过程,并且需要适当的日志轮换。

我试图在/etc/rsyslog.d/60-myfilter.conf中添加自定义过滤器;

if $syslogtag == 'giomanager' then /var/log/giomanager.log

我究竟做错了什么 ?根据标签进行过滤的正确方法是什么?是否有更好的选择可以得到相似的结果?

Answers:


21

我没有使用过(例如syslogtag),但是我已经使用过:<blah>,<condition> ...(特别是:msg,contains,...),但是尝试

:syslogtag, isequal, "giomanager:" /var/log/giomanager.log
& stop

& stop(或者,& ~在rsyslog现在V6和老年人(如上RHEL6))导致否则记录将被其他规则来进一步解析后丢弃匹配消息。


更新:经过测试并

syslogtag包含:,应放在""而不是''


感谢您的答复。我只是尝试了您的建议,实际上消息已被丢弃,但从未被写过/var/log/giomanager.log
mistyrouge 2013年

@mistyrouge:请参阅我的更新
2013年

2
非常感谢,我现在将日志重定向到,/var/log/giomanager.log 仍将其写入/ var / log / syslog。您是否知道为什么会发生这种情况以及如何预防呢?
mistyrouge 2013年

1
弃用操作(〜指示器)已被弃用:已由(更好的)替代“停止”语句代替:kb.monitorware.com/kbeventdb-detail-id-7171.html
Ivan Rave

7

因此,我终于找到了解决问题的方法。

非常感谢@lain带领我前进。

如前所述,解决方案是在标签名称中包含“:”。同样,这非常重要,文件名必须50-default.conf按字母顺序在前面。

要恢复,请将以下内容放入30-giomanager.conf

:syslogtag, isequal, "giomanager:" /var/log/giomanager.log
& stop

请注意,该文件/var/log/giomanager.log应可由“ syslog”用户写入。


谢谢@mistyrouge。我遇到了同样的问题。登录到正确的文件后,我的日志将重定向到/ var / log / syslog。您是否知道为什么会发生这种情况以及如何预防呢?
Mayank Patel

我无法使用它来过滤bind9日志。而是使用':programname,isequal,“ named” /var/log/named/named.log“起作用。可能是因为标记类似于“ named [32193]”。
Rennex

例如,如果变量包含PID startswithisequal则可以使用来代替。或regex用于复杂的比赛。
蒂姆·西尔维斯特
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.