我有几个应用程序和脚本,我想将输出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'用户写入。