【问题标题】:Problems with multiline extension in nxlognxlog 中的多行扩展问题
【发布时间】: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


    【解决方案1】:

    这条线需要修复。

    Exec if $raw_event !~ /^--/ drop()
    

    应该是

    Exec if $raw_event =~ /^--/ drop()
    

    【讨论】:

      猜你喜欢
      • 2016-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-24
      • 2011-07-25
      • 2017-10-13
      相关资源
      最近更新 更多