Grok 调试器和 Logstash grok 中的不同行为
Different behavior in Grok debugger and Logstash grok
我的场景如下:我有一个堆栈跟踪作为我的 Logstash 实例的输入。因为我使用 GELF,所以整个堆栈跟踪在一个字段中传输,看起来像这样(缩短):
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 ...
我想要达到的是捕获堆栈跟踪中最后一个 "Caused by" 冒号后面的行的其余部分(此处:'java.lang.NullPointerException'),以便将其存储到专用的场地。
为此,我使用以下 oniguruma 正则表达式:
[\s\S]*\nCaused by:(?<cause>.*)[\s\S]*
奇怪的是,这与 grok 调试器完美配合,但是一旦我将正则表达式移动到我的 Logstash conf,它也会让我获得剩余的堆栈跟踪 ('java.lang.NullPointerException at ...'),跳过\n 字符。
这可能是 Logstash 或调试器中的错误吗?
感谢您的提示!
您可以使用 [^\r\n]
字符明确定义 不是换行符 class:
[\s\S]*\nCaused by:(?<cause>[^\r\n]*)[\s\S]*
^^^^^^^^
我的场景如下:我有一个堆栈跟踪作为我的 Logstash 实例的输入。因为我使用 GELF,所以整个堆栈跟踪在一个字段中传输,看起来像这样(缩短):
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 ...
我想要达到的是捕获堆栈跟踪中最后一个 "Caused by" 冒号后面的行的其余部分(此处:'java.lang.NullPointerException'),以便将其存储到专用的场地。 为此,我使用以下 oniguruma 正则表达式:
[\s\S]*\nCaused by:(?<cause>.*)[\s\S]*
奇怪的是,这与 grok 调试器完美配合,但是一旦我将正则表达式移动到我的 Logstash conf,它也会让我获得剩余的堆栈跟踪 ('java.lang.NullPointerException at ...'),跳过\n 字符。 这可能是 Logstash 或调试器中的错误吗?
感谢您的提示!
您可以使用 [^\r\n]
字符明确定义 不是换行符 class:
[\s\S]*\nCaused by:(?<cause>[^\r\n]*)[\s\S]*
^^^^^^^^