如何通过标签过滤rsyslog消息

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

我使用启动这些应用程序

command | logger -t TAG 

我想根据他们的标签过滤这些消息,并将其redirect到不同的文件。 我不想使用bashredirect,因为这些应用程序主要是长时间运行的过程,需要适当的日志轮换。

我曾尝试在/etc/rsyslog.d/60-myfilter.conf中添加自定义filter;

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

我究竟做错了什么 ? 什么是正确的方式来过滤基于标签或有更好的select有类似的结果?

我没有使用,如果这样(或syslogtag),但我已经使用:<blah>,<condition> ... (特别是:味精,包含,…),但尝试

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

在rsyslog v6和更旧版本(例如RHEL6上)中, & stop (或者& ~ )会导致匹配的消息在日志logging后被丢弃,否则会被其他规则进一步parsing。


更新:testing和

syslogtag包含一个:并且应该用""而不是''括起来

所以我终于find了解决我的问题。

非常感谢@lain带领我的方式。

如前所述的解决scheme是在标签名称中包含“:”。 另外,这非常重要,文件名必须按照字母顺序排列在50-default.conf之前。

要恢复,请在30-giomanager.conf以下30-giomanager.conf

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

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