我正在尝试使用带有nxlog的xm_multiline
模块将日志文件的内容转发到logstash日志包含正确缩进的不同xml元素(开始和结束元素位于行的开头) 。 E.g。
<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解析。
由于元素名称不同,我只能使用<
和</
来查找起始行和结束行。我希望这样的过滤器足以选择正确的行:
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]/