私のシナリオは次のとおりです。Logstashインスタンスへの入力としてスタックトレースがあります。私はGELFを使用しているので、全体のスタックトレースは、単一のフィールドに移し、このようになります(短縮)されていますGrokデバッガとLogstash grokでの動作が異なります
javax.servlet.ServletException: Something bad happened
at com.example.myproject.OpenSessionInViewFilter.doFilter(OpenSessionInViewFilter.java:60)
Caused by: java.lang.IllegalArgumentException
at ...
Caused by: java.lang.NullPointerException
at ...
私が "最後のコロンを次の行の残りの部分をキャプチャされて到達したいですそれを専用フィールドに格納するためにスタックトレース(ここでは 'java.lang.NullPointerException')で発生します。 はそうするために、私は次の鬼車正規表現を使用します。
[\s\S]*\nCaused by:(?<cause>.*)[\s\S]*
奇妙なことは、これはGROKデバッガで完璧に動作しますが、できるだけ早く私はLogstash confのに正規表現を移動すると、それはまた私を取得ということです残りのスタックトレース( 'java.lang.NullPointerException at ...')は、\ n文字をスキップします。 これはLogstashかデバッガのどちらかのバグでしょうか?
あなたのヒントをありがとう!
が続いて明示的に定義しよう*ない改行* '[\ S \ S] * \ :(によってnCaused? [^ \ r \ n] *)[\ s \ S] * ' –