我有一个正在写入系统日志的应用程序。写入系统日志的消息针对需要过滤掉的各种存储桶。每条消息都以桶号开头,因此消息写为:
1: Message for bucket 1
14: Message for bucket 14
123: Message for bucket 123
Run Code Online (Sandbox Code Playgroud)
我想根据存储桶编号过滤这些消息,我想这可以使用正则表达式来完成。这些存储桶是数字,范围可以是 1-999。这些存储桶的输出应该进入不同的文件,每个存储桶一个。对于上面的例子,应该是:
/var/log/myapp/1.log
/var/log/myapp/14.log
/var/log/myapp/123.log
Run Code Online (Sandbox Code Playgroud)
有人可以帮助我如何使用 rsyslog 来完成此操作吗?
小智 5
我在 rsyslog 配置中做了一个简单的过滤器。
在我看来,它看起来像这样:
:msg, contains, "123: Message for bucket 123" -/var/log/myapp/123.log
Run Code Online (Sandbox Code Playgroud)
这将在传入系统日志消息的 msg 属性中搜索该字符串,并将其记录到我指定的文件中。
如果您想了解有关配置 rsyslog 的更多信息,这里是一个很好的起点:http://www.rsyslog.com/doc/rsyslog_conf.html
小智 5
我想我这个答案有点晚了,但实际上 rsyslog 允许您动态创建日志文件名,因此您可以创建一个模板,使用field.number或regex.submatch属性根据 msg 内容构造日志文件名提取存储桶编号 - 请参阅http://www.rsyslog.com/doc/master/configuration/templates.html了解详细信息。
然而,如果您对 999 行感到满意,它肯定更简单,并且 Ronaldo Nascimento 解决的问题可以通过使用contains_i而不是contains来解决- contains_i不区分大小写。
归档时间: |
|
查看次数: |
37139 次 |
最近记录: |