在logstash的输出中,每行日志开头都会加上timestamp. ,对于mysql的slowlog
和tomcat log多行输出格式,就显得画蛇添足了,可读性很差,如:
因此需要使用logstash的 multiline 多行合并功能
在logstash的配置文件中加入过滤规则:
filter { #slowlog每一段完整的日志都是以"# Time:"开头的,所以,如果是以"# Time:"开头的就开始新 #一行,否则归到上一行中 if [type] == 'slowlog' { multiline { what => next pattern => "^# Time:" #如果是"# [A-Za-z0-9_-]+@"开头的合并到上一行 } multiline { what => previous negate => true pattern => "^# [A-Za-z0-9_-]+@" } } #tomcat log 每段日志是以时间戳开始的 if [type] == 'tomcat' { multiline { pattern => "^%{TIMESTAMP_ISO8601} " negate => true what => previous } } }
效果: