我正在尝试使用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]/