事件

2014-06-25 30 views
1

在我的日誌文件Logstash降濾波器我有條目類似如下:事件

2014-06-25 12:36:18,176 [10] ((null)) INFO [s=(null)] [u=(null)] Hello from Serilog, running as "David"! [Program] 
2014-06-25 12:36:18,207 [10] ((null)) WARN [s=(null)] [u=(null)] =======MyOwnLogger====== Hello from log4net, running as David! [MyOwnLogger] 
2014-06-25 12:36:18,209 [10] ((null)) ERROR [s=(null)] [u=(null)] =======MyOwnLogger====== Hello from log4net, running as David! [MyOwnLogger] 

它們分別是日誌級別信息的,WARN和ERROR。

我想要做的只是輸出到Elasticsearch那些錯誤級別的條目。這是我的Logstash配置文件:

input { 
    file { 
     path => "Somepath/*.log" 
    } 
} 

# This filter doesn't work 
filter { 
    if [loglevel] != "error" { 
    drop { } 
    } 
} 

output { 
    elasticsearch { host => localhost } 
    stdout {} 
} 

實際上,目前沒有任何內容會發送到Elasticsearch。我知道它與過濾器有關,因爲如果它不在那裏,所有的條目都會發送到Elastisearch。

+0

你的'grok'過濾器在哪裏解析記錄? – Alcanzar

+0

@Alcanzar:作爲新手,我遵循http://logstash.net/docs/1.4.2/filters/drop上的指示。有一個下拉過濾器,我不想使用grok過濾器。我只是不知道如何正確使用它。 – DavidS

+1

查看grok的文檔並找出符合條目的模式(http://grokdebug.herokuapp.com/是一個可幫助您測試的網站)。 – Alcanzar

回答

4

試試這個grok過濾器。這是我的作品與你的日誌

filter { 
    grok { 
      match => ["message","%{TIMESTAMP_ISO8601:logtime} \[%{NUMBER}\] \(\(%{WORD}\)\) %{WORD:loglevel} %{GREEDYDATA:other}"] 
    } 

    if [loglevel]!= "ERROR" { 
      drop {} 
    } 
} 

首先,你需要神交日誌級別,那麼就可以用現場做的,如果其他條件而定降與否。