我有一个正在写入syslog的应用程序。 写入syslog的消息适用于需要过滤的各种桶。 每条消息都以一个桶号开始,所以这些消息写成:
1: Message for bucket 1 14: Message for bucket 14 123: Message for bucket 123
我想根据桶号过滤这些消息,我想这可以用正则expression式来完成。 这些桶是数字的,可以在1-999的范围内。 这些桶的输出应该是不同的文件,每个桶一个。 对于上面的例子,应该是:
/var/log/myapp/1.log /var/log/myapp/14.log /var/log/myapp/123.log
有人可以帮助我如何做到这一点与rsyslog?
我在rsyslogconfiguration中做了一个简单的filter。
在我的这个看起来是这样的:
:msg, contains, "123: Message for bucket 123" -/var/log/myapp/123.log
这将search该string的传入syslog消息的msg属性,并将其logging到我指定的文件中。
如果你想了解更多关于configurationrsyslog的信息,请点击这里: http : //www.rsyslog.com/doc/rsyslog_conf.html
我想这个答案有点晚了,但实际上rsyslog可以让你dynamic地创build日志文件名,所以你可以创build一个模板来构build基于msg内容的日志文件名,使用field.number或者regex.submatch属性提取存储桶编号 – 详情请参阅http://www.rsyslog.com/doc/master/configuration/templates.html 。
然而,你对999行感到满意,这当然是简单的,而罗纳尔多·纳西门托处理的问题可以通过使用contains_i而不是contains – contains_i来区分大小写。