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
詳細解釋能夠看上面連接.正則表達式