【发布时间】:2015-07-13 21:06:02
【问题描述】:
我有以下日志格式:
-- New Entry -------------------------
08:03:10 01.04.15 ncjhdnbchjbdc
08:03:10 jnkjsdncksjdnc
xd1: ndkjewnckjdwcndw
xd2: jncxkjdsnkjcndsqckjnc c cw djkcdnc cnd kj nc
08:03:10 dscsdcdsc
-- New Entry -------------------------
08:03:10 01.04.15 ncjhdnbchjbdc
08:03:10 jnkjsdncksjdnc
xd1: ndkjewnckjdwcndw
xd2: jncxkjdsnkjcndsqckjnc c cw djkcdnc cnd kj nc
08:03:10 dscsdcdsc
我想要一行完整的条目,所以我使用多行扩展:
<Extension multiline>
Module xm_multiline
HeaderLine /^--/
EndLine " "
</Extension>
<Input in>
Module im_file
File "input.txt"
SavePos TRUE
ReadFromLast TRUE
InputType multiline
Exec if $raw_event !~ /^--/ drop();
Exec $raw_event = replace($raw_event, "\r\n", ";");
</Input>
<Output out>
Module om_file
File "output.txt"
</Output>
<Route 1>
Path in => out
</Route>
在 nxlog 启动后,多行扩展对输入文件中的现有条目按预期工作。新条目未正确写入输出。只有标题将被写入输出。 有人知道我做错了什么吗?
更新: im_file 的 PollInterval 似乎是问题所在。我在 nxlog 的文档(xm_multiline 部分)中关注了以下内容:
注意 在读取到新的标头之前,之前的消息会存储在缓冲区中,因为模块不知道在哪里 消息结束。 im_file 模块将在之后强制刷新此缓冲区 配置的 PollInterval 超时。如果这种行为是 不可接受,考虑使用某种封装方法 (JSON、XML、RFC5425 等)或在 EndLine 中使用结束标记,如果 可能。
所以,我使用了结束标记,但它不起作用。我为 EndLine 尝试了不同的值(正则表达式:/^\s*$/ String: " ")
【问题讨论】:
标签: nxlog