在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
}
}
}
效果:
转载于:https://blog.51cto.com/3379770/1885131