2016-04-11 34 views
1

Benim durumum şöyledir: Logstash örneğimin girdisi olarak yığın izim var. Ben GELF kullandığından, bütün yığın izleme tek bir alandaki transfer ve böyle görünüyor (kısaltılmış) olduğu:Grok hata ayıklayıcıda ve Logstash grok uygulamasında farklı davranış

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 ... 

Ne "Son bir kolondan sonra hattın kalanını kaydı yapıyor ulaşmak istiyorum Bunu "özel bir alana depolamak için yığın izinde (burada: 'java.lang.NullPointerException') neden oldu. Bunu yapmak için aşağıdaki oniguruma normal ifadeler kullanabilirsiniz:

[\s\S]*\nCaused by:(?<cause>.*)[\s\S]* 

garip şey bu grok debugger ile mükemmel çalışıyor, ama en kısa zamanda benim Logstash conf sağlamak için normal ifadeler hareket ederken, aynı zamanda beni alır olmasıdır \ n karakterini atlayarak yığın izinin geri kalanı ('java.lang.NullPointerException ...'). Bu, Logstash veya hata ayıklayıcı içindeki bir hata olabilir mi?

İpuçlarınız için teşekkürler!

+1

Sonra açıkça tanımlamak için denemek * değil linebreak * '[\ s \ S] * \ :(tarafından nCaused? [^ \ r \ n] *) [\ s \ S] * ' –

cevap

1

Açıkça tanımlayabilirsiniz değil [^\r\n] karakter sınıfıyla bir linebreak: ile

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

Güzel bir çözüm, mükemmel çalışıyor! =) Bu arada: Bu davranış farklılıklarının nereden gelebileceğine dair bir fikrin var mı? – pklndnst