logstash 的多行模式 [英] Multiline pattern for logstash
问题描述
我已经搜索了SO,当然选择了搜索引擎,但没有找到有效的解决方案.
I've searched SO and of course the searchengine of choice but found no valid solution.
我尝试用logstash解析多行日志文件,但没有成功.
I try to parse a multiline logfile with logstash without any success.
日志文件如下:
appl.log
2014-02-31 11:06:55,268-WARN主com.applicationname.commons.shop.OrderDetailsjava.lang.NullPointerException在这里一些文本在这里一些文本在这里在这里一些文本在这里一些文本在这里在这里一些文本在这里一些文本在这里在这里一些文本在这里一些文本在这里在这里一些文本在这里一些文本在这里在这里一些文本在这里一些文本在这里在这里一些文本在这里一些文本在这里在这里一些文本在这里一些文本在这里2014-02-31 11:06:55,268-警告主com.applicationname.commons.shop.OrderDetailsjava.lang.NullPointerException某处某处某处某处在这里一些文本在这里一些文本在这里在这里一些文本在这里一些文本在这里在这里一些文本在这里一些文本在这里在某处此处在某处此处
AFAIK以"\ t ... at"开头的行
AFAIK the lines a starting with "\t...at "
我当前的Logstash conf(非工作版本)看起来像:
My current (non working version) conf for logstash looks like:
logstash.conf
input =>
input {
file {
path => "/var/log/appl.log"
type => "appl"
codec => multiline {
negate => true
pattern => "^\s"
what => "previous"
}
}
}
filter =>
filter =>
filter {
if [type] == "appl" {
grok {
add_tag => [ "groked" ]
match => ["message", ".*"]
remove_tag => ["_grokparsefailure"]
}
}
}
欢迎为正确的多线滤波器引入正确的方向.
Any lead into the right direction for a working multiline filter is welcome.
推荐答案
尝试一下:
input =>
input {
file {
path => "/var/log/appl.log"
type => "appl"
codec => multiline {
pattern => "^%{TIMESTAMP_ISO8601} "
negate => true
what => "previous"
}
}
}
过滤器=>
filter {
if [type] == "appl" {
grok {
add_tag => [ "groked" ]
match => ["message", ".*"]
remove_tag => ["_grokparsefailure"]
}
}
}
这篇关于logstash 的多行模式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!