2016-08-19 87 views
0

我正在使用LogStash接收來自日誌文件的數據,日誌文件具有不同類型的日誌。如何在Logstash配置文件中包含過濾器?

第一行表示自定義日誌,而第二行表示JSON格式的日誌。

現在,我想編寫一個過濾器,它將根據內容解析日誌,並最終將所有JSON格式的日誌導向一個名爲jsonformat.log的文件,而另一個日誌則記錄到一個單獨的文件中。

回答

2

您可以利用json過濾器並檢查它是否失敗或不確定發送事件的位置。

input { 
    file { 
     path => "/Users/mysystem/Desktop/abc.log" 
     start_position => beginning 
     ignore_older => 0 
    } 
} 
filter { 
    json { 
    source => "message" 
    } 
} 
output { 
    # this condition will be true if the log line is not valid JSON 
    if "_jsonparsefailure" in [tags] { 
    file { 
     path => "/Users/mysystem/Desktop/nonjson.log" 
    } 
    } 
    # this condition will be true if the log line is valid JSON 
    else { 
    file { 
     path => "/Users/mysystem/Desktop/jsonformat.log" 
    } 
    } 
} 
+0

我不知道爲什麼,但雖然你的代碼將配置測試,當我在我的輸入文件運行它,它只是表明,管道已經啓動,但它不會創建日誌文件。 – rohansingh

+0

您需要將新行添加到您的'abc.log'文件或將'sincedb_path =>「/ dev/null」'添加到您的文件輸入中。 – Val

+0

是的,我做到了。我甚至嘗試添加新行,但它仍然不會創建新文件。我張貼我的配置文件供你看看。還有,輸入文件。 (在提問中作爲編輯的一部分提到) – rohansingh