基于消息内容的系统日志目标
syslog destination based on message content
我正在尝试动态设置系统日志消息的目标,但我不知道该怎么做。我想根据消息的内容将消息记录到某些文件夹。
例如,我虚构的程序将根据对象的 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.
非常感谢任何帮助。
Syslog 本身 不允许您的想法。 syslog facilities 允许使用 localx
工具将日志记录到单独的文件。但是他们限制在8个。
要使用 syslog 实现您想要的,即根据日志消息的内容记录到不同的文件,您将必须编写自定义 syslog output plugin
我正在尝试动态设置系统日志消息的目标,但我不知道该怎么做。我想根据消息的内容将消息记录到某些文件夹。
例如,我虚构的程序将根据对象的 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.
非常感谢任何帮助。
Syslog 本身 不允许您的想法。 syslog facilities 允许使用 localx
工具将日志记录到单独的文件。但是他们限制在8个。
要使用 syslog 实现您想要的,即根据日志消息的内容记录到不同的文件,您将必须编写自定义 syslog output plugin