モジュールを nxlog と共に使用してxm_multiline
、ログファイルのコンテンツを 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]/