合并多行数据(Multiline)
而 logstash 正为此准备好了 codec/multiline 插件!
小贴士:multiline 插件也可以用于其他类似的堆栈式信息,比如 linux 的内核日志。
运行 logstash 进程,然后在等待输入的终端中输入如下几行数据:
你看,后面这个事件,在 “message” 字段里存储了三行数据!
小贴士:你可能注意到输出的事件中都没有最后的”the end”字符串。这是因为你最后输入的回车符 并不匹配设定的 ^\[
正则表达式,logstash 还得等下一行数据直到匹配成功后才会输出这个事件。
其实这个插件的原理很简单,就是把当前行的数据添加到前面一行后面,,直到新进的当前行匹配 正则为止。
说到应用程序日志,log4j 肯定是第一个被大家想到的。使用 codec/multiline
也确实是一个办法。
不过,如果你本事就是开发人员,或者可以推动程序修改变更的话,logstash 还提供了另一种处理 log4j 的方式:input/log4j。与 不同,这个插件是直接调用了 org.apache.log4j.spi.LoggingEvent
处理 TCP 端口接收的数据。