哪个HeaderLine和EndLine用于具有不同元素的多行xml

时间:2014-12-11 17:49:53

标签: regex xml nxlog

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

0 个答案:

没有答案