什么是多行的正则表达式模式(logstash)

时间:2014-06-18 13:22:44

标签: regex tomcat stack-trace multiline logstash

目前我有:

multiline {
 type => "tomcat"
 pattern => "(^.+Exception: .+)|(^\s+at .+)|(^\s+... \d+ more)|(^\s*Caused by:.+)|(---)"
 what => "previous"
}

这是我日志的一部分:

TP-xxxxxxxxxxxxxxxxxxxxxxxx: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
    at xxxxxx
Caused by: xxxxxxxxx
    at xxxxxx
Caused by: xxxxxxxxx   
--- The error occurred in xxxxxxxxx.  
--- The error occurred xxxxxxxxxx.  

我的模式在这里不起作用。可能是因为我在最后添加了(---)。什么是正确的正则表达式还添加---线?

由于

3 个答案:

答案 0 :(得分:2)

您还想要考虑该行上的其他字符:

(^---.*$)

答案 1 :(得分:2)

我已将你的正则表达式和文本放到这些在线正则表达式的好友中并尝试了Eric的建议:

有时,这些在线好友确实有助于清除头脑。这张照片显示了什么是公认的:

Regex processing on regexr.com

如果我坚持这一点,我就不会再继续专注于正则表达式。相反,我会检查这些要点:

  • 由于有不同的正则表达方言,logstash使用什么方言?这对我的模式意味着什么?
  • 是否有任何未设置且需要设置的logstash特定修饰符?
  • 正如Ben所说,还有其他过滤工具。是否有助于使用grok

答案 2 :(得分:1)

如果一个日志事件以时间戳或特定字开头,例如,如果所有日志都以TP开头,则在日志中,您可以将其用作过滤模式。

    multiline {
            pattern => "^TP"
            what => "previous"
            negate => true
    }

使用此过滤器,您可以轻松地对日志进行多线化,无需使用复杂模式。