logstash显示单行日志很方便,但是多行日志怎么搞.
input {
file {
type =>"xxxxxx"
path => ["/tmp/test/test.txt"]
codec => multiline {
pattern => "^%{TIMESTAMP_ISO8601} "
negate => true
what => previous
}
}
}
日志格式如下是python的堆栈调用.每个日志必须是时间开始
2016-01-10 10:10:10,384 - Internal Server Error: /abcdef/testurl/
Traceback (most recent call last):
File "/usr/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 111, in get_response
response = xxxxxcallback(request, *callback_args, **callback_kwargs)
File "/xxxxxxxxxxx/xxxxxxxxx/xxxxxxxxx/views.py", line 2750, in xxxxxxxxxxxx
abcids = [[int(i) for i in idx.split('_')] for ids in xxxxids[0].split(',')]
IndexError: list index out of range
其实nginx的error日志同样可以使用这种方式,唯一需要注意的是第一列必须有个特定的东西,
multiline插件最重要的方面:
pattern 选项指定一个正则表达式。 事件匹配指定的正则表达式来确定是前一个事件的内容还是新的事件的内容。可以使用grok正则表达式的模板来配置该选项。
what 选项有两个选择值: previous 或者 next。 previous 值指定行匹配pattern选项的内容是上一行的一部分。 next 指定行匹配pattern选项的内容是下一行的一部分。* negate选项适用于multiline codec 行不匹配pattern选项指定的正则表达式。
该配置使用negate => true 选项来指定任何不是以时间戳开始的行属于前行。也就是不匹配pattern的行都属于前行的内容的一部分。
http://www.cnblogs.com/sl21100/p/5341428.html
详细解释可以看上面链接.