事件的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] 

它们分别是日志级别的INFO,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。

本林

试试这个grok过滤器。它对您的日志对我有用

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

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

首先,您需要查看日志级别,然后可以使用该字段执行其他条件并决定是否丢弃。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章