2017-01-23 61 views
1

我想动态设置系统日志消息的目的地,我无法弄清楚如何去做。我希望根据邮件的内容将邮件记录到某些文件夹中。基于消息内容的系统日志目的地

例如,我虚构的程序会根据它的ID在系统中记录关于系统中的对象的消息。因此,对象上的每个CRUD操作都使用其ID进行记录。我想根据它的ID为每个对象都有一个单独的日志文件。

如果有一种方法可以通过正则表达式解析ID,存储ID,然后在目标中使用它,我将能够满足我的要求。

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

# 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); }; 

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

1234.log

6789.log

...每个组中2个消息。

[1234] Updated. 
[1234] Deleted. 
[6789] Created. 
[6789] Fetched. 

任何帮助,非常感谢。

回答

0

系统日志本身不允许你想到的。 syslog facilities允许使用localx工具记录分隔文件。但他们被限制在8

达到你想要使用syslog什么,即登录到日志消息的内容不同的文件的基础上,你将不得不@qux编写自定义syslog output plugin

+1

感谢。在写入syslog时,我最终'标记'了$ {PROGRAM}。然后我使用过滤器将消息路由到正确的日志文件。有用。 –

相关问题