2015-09-22 100 views
0

我與形式Logstash多的XML篩選

<ae cat="fixed" ts="2015-09-11T05:57:27.500-07:00"> 
<s u="admin"></s> 
</ae> 

的事件日誌文件,我想使用XML logstash過濾器對這個文件進行解析,並得到@貓=固定

filter { 
    multiline { 
     pattern => '^<ae' 
     negate => true 
     what => "next" 
     } 
     xml { 
      store_xml => "false" 
      source => "message" 
      xpath => [ "/ae/@cat", "cat" ] 
     } 
    } 

這隻會得到事件的第一行。我嘗試了否定'假'或'以前'的東西,但似乎沒有任何工作。

任何幫助將不勝感激。

回答

0

「如果該行不是以< ae開頭,請保留下一行?」

似乎倒退了。

嘗試:

multiline { 
    pattern => '^<ae' 
    negate => true 
    what => "previous" 
} 

注意,也不會釋放的第一條消息,直到下一個開始,所以,對於測試,總是至少兩個消息貼上它。

輸出我得到:

{ 
     "message" => "<ae cat=\"fixed\" ts=\"2015-09-11T05:57:27.500-07:00\">\n <s u=\"admin\"></s>\n</ae>\n", 
     "@version" => "1", 
    "@timestamp" => "2015-09-22T19:39:12.371Z", 
      "host" => "0.0.0.0", 
      "tags" => [ 
     [0] "multiline" 
    ] 
} 
+0

這不工作,要麼,我還是隻獲取XML的第一行。 – PANTS

+0

由輸出添加。也許你的配置中還有其他的東西。 –

+0

只是爲了澄清,上述工作,問題是我使用VIM將日誌添加到測試輸入文件,我想這樣搞砸logstash的方式記住我的文件的狀態,作爲副作用只有第一行文件被讀取。謝謝 – PANTS