logstash显示单行日志很方便,可是多行日志怎么搞.html
input { file { type =>"xxxxxx" path => ["/tmp/test/test.txt"] codec => multiline { pattern => "^%{TIMESTAMP_ISO8601} " negate => true what => previous } } }
日志格式以下是python的堆栈调用.每一个日志必须是时间开始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日志一样能够使用这种方式,惟一须要注意的是第一列必须有个特定的东西,nginx
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
详细解释能够看上面连接.正则表达式