syslog目标基于消息内容

时间:2017-01-23 21:43:59

标签: syslog

我正在尝试动态设置系统日志消息的目标,但我无法弄清楚如何执行此操作。我希望根据邮件内容将邮件记录到某些文件夹中。

例如,我的虚构程序将根据其ID记录系统中对象的消息。因此,对象的每个CRUD操作都会记录它的ID。我希望根据它的ID为每个对象提供单独的日志文件。

如果有办法通过正则表达式解析ID,存储ID,然后在目的地使用它,我就能满足我的要求。

这样的东西(显然是伪代码并且不起作用),其中每条日志消息都有对象ID作为日志文件名,在每个日志消息中存储在括号中并且是4位数:

targetNamespace

在这种情况下,会有2个日志文件......

1234.log

6789.log

...每个都有2条消息。

# somehow parse out value that matches the regex \[\s\d][\s\d][\s\d][\s\d]\] and store it in $id
destination df_dest { file("/v/logs/${YEAR}${MONTH}${DAY}/$id.log"); };
filter f_program { program("program"); };
log { source(s_all); filter (f_program); destination (df_dest); flags(final); };

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

Syslog 本身不允许您考虑的内容。 syslog facilities允许使用localx工具记录单独的文件。但它们仅限于8个。

要使用syslog实现您想要的功能,即根据日志消息的内容记录到不同的文件,您必须编写自定义syslog output plugin