Codec plugins ? multiline multiline codec 会折叠多行消息,合并它们到一个事件 这个codec 原始的目的是允许 连接多行信息从文件到一个单独的事件。 比如, 连接Java 异常和stacktrace 消息到一个单独的事件 配置看起来像这样: input { stdin { codec => multiline { pattern => "pattern, a regexp" negate => "true" or "false" what => "previous" or "next" } } } input { file { type => "zj_api" path => ["/data01/applog_backup/zjzc_log/zj-api*catalina*"] codec => multiline { pattern => "^s+%{TIMESTAMP_ISO8601}" negate => true what => "previous" } } file { type => "wj_api" path => ["/data01/applog_backup/winfae_log/wj-api*catalina*"] codec => multiline { pattern => "^s+%{TIMESTAMP_ISO8601}" negate => true what => "previous" } } } pattern 应该匹配你相信的作为一个指示字段是一个多行事件的一部分 what 必须是 previous or next 表明和多行事件的关系 negate 可以是true 或者false(默认false) 如果是true, 一个消息不匹配模式 会组成一个多行过滤器的匹配 例如, Java stack traces 是多行匹配和通常有消息开始在左边,每个后续行是缩进的 像这样: input { stdin { codec => multiline { pattern => "^s" what => "previous" } } } 这个意思是任何行以空格开头属于先前的行 另外一个例子是合并多行不是以日志开始的 合并到上一行 input { file { path => "/var/log/someapp.log" codec => multiline { # Grok pattern names are valid! :) pattern => "^%{TIMESTAMP_ISO8601} " negate => true what => previous } } } 这个意思是任何行不以时间戳开头的都合并到上一行 一个常见的例子是C的续行(反斜杠), filter { multiline { type => "somefiletype" pattern => "\$" what => "next" } } 这表示, 任何行以反斜杠借宿应该合并到下一行 Synopsis 简介: 插件支持下面的配置选项: 需要的配置选项: multiline { pattern => ... what => ... }