2014-06-18 65 views
0

我正在嘗試使用多行將具有相同起始符號的日誌文件中的多個行組合起來。在我的情況下,起始符號是#S#。它看起來像這樣:在logstash過濾器中使用多行打印數據?

#S# dsifj sdfojosf sfjosdfoisdjf 
#S# dsfj sdojifoig dfpkgokdfgk 89s7fsjlk sdf 
#S# lsdffm dg;;dfgl djfg 930`e`fsd 
... 
... 
... 

注意:隨機字符只是用來模仿實際日誌的內容。

下面是什麼寫的多startment:

multiline { 
    type => "table_init" 
    pattern => "#S#" 
    negate => true 
    what => "next" 
} 

我假設我寫不將它們合併爲一條線,但我想,如果這樣就會打印出線路或做我需要在打印之前使用gork解析整個行。任何想法和投入都會有幫助。謝謝。

回答

0

如果您嘗試匹配所有匹配「#S#」的行,那麼您應該將否定設置爲false。當你想要得到所有不符合特定模式的行時,你使用否定。

至於你的實際問題,多行採取所有相關的行,並將它們放到「消息」字段中,包括換行符(\ n),如果你還在運行Windows, )。然後你可以把這整個消息挖掘出來以獲得你想要的數據。

因此,如果您設置輸出像這樣:

output { stdout { codec => rubydebug } } 

您應該發現輸出的消息將讀取類似:如果您設置多過濾器正確

"message" = "#S# dsifj sdfojosf sfjosdfoisdjf \n#S# dsfj sdojifoig dfpkgokdfgk 89s7fsjlk sdf\n#S# lsdffm dg;;dfgl djfg 930`e`fsd 

希望這會有所幫助!