1

我正在尝试使用xm_multiline带有 nxlog 的模块将日志文件的内容转发到 logstash 该日志包含正确缩进的不同 xml 元素(打开和关闭元素位于行首)。例如

<data
    version="x"
    xmlns:bla="http://www.example.com/bla">
    <val:InfoSet>
      ...
        ...
          ...
    </val:InfoSet>
</data>

<message  ...>
    <ns>bla</ns>
    ...
        ...
</message>

它不需要解析nxlog 中的xml,只需将每个顶部元素(例如数据或消息)转发到logstash,然后在logstash 中进行xml 解析。

因为元素有不同的名字,我只能用<and</来查找起始行和结束行。我希望这样的过滤器足以选择正确的行:

HeaderLine  /^</
EndLine     /^<//

但不知何故,nxlog 与 EndLine 的正则表达式模式中的 / 混淆了,并在日志中显示了这一点:

ERROR HeaderLine and Endline both match

我尝试了各种引用,但从未得到预期的结果。有什么建议吗?

更新,我做了更多测试

工作过

HeaderLine  /^<m/
EndLine     /^</m/

HeaderLine  /^<m/
EndLine     /^<\/m/

HeaderLine  /^<[abcdefghijklm]/
EndLine     /^<\/[abcdefghijklm]/

HeaderLine  /^<[abcdefghijklmo]/
EndLine     /^<\/[abcdefghijklmo]/

HeaderLine  /^<[abcdefghijklmopqrstuvwxyz]/    (left out n)
EndLine     /^<\/[abcdefghijklmopqrstuvwxyz]/

HeaderLine  /^<[abcdefghijklmopqrstuvwxyz]/ (left out n + not escaped
EndLine     /^</[abcdefghijklmopqrstuvwxyz]/

没用:

HeaderLine  /^</
EndLine     /^</m/

HeaderLine  /^<[a-z]/
EndLine     /^</m/

HeaderLine  /^<\w/
EndLine     /^</m/

HeaderLine  /^<[abcdefghijklmn]/
EndLine     /^<\/[abcdefghijklmn]/

HeaderLine  /^<[bcdefghijklmn]/
EndLine     /^<\/[bcdefghijklmn]/

HeaderLine  /^<[abcdefghijklmopqrstuvwxyzn]/  (n at the last position)
EndLine     /^<\/[abcdefghijklmopqrstuvwxyzn]/

HeaderLine  /^<[abcdefghijklmnopqrstuvwxyz]/
EndLine     /^</[abcdefghijklmnopqrstuvwxyz]/
4

0 回答 0