2016-04-11 9 views
1

私のシナリオは次のとおりです。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かデバッガのどちらかのバグでしょうか?

あなたのヒントをありがとう!

+1

が続いて明示的に定義しよう*ない改行* '[\ S \ S] * \ :(によってnCaused? [^ \ r \ n] *)[\ s \ S] * ' –

答えて

1

あなたが明示的にを定義することができません[^\r\n]文字クラスと改行:と

[\s\S]*\nCaused by:(?<cause>[^\r\n]*)[\s\S]* 
          ^^^^^^^^ 
+0

完璧に機能します。 =)ところで、あなたはこれらの行動の違いがどこから来るのか考えていますか? – pklndnst

関連する問題