我目前正在尝试从日志文件中过滤特定行。我在日志文件中的行具有以下模式。

[8/05/13 14:24:55.468] RuntimeErrorI E LaError
[8/05/13 14:24:55.468] AbcdEfg W SomeWarning

其中第一个是日期,时间,应用程序名称和日志级别(警告,错误,跟踪等),其后是错误消息或警告消息或任何其他消息。

因此,我试图获取的只是日志级别错误,而不是其他日志级别。
我正在玩以下游戏,但根本没有获得控制台输出。我认为我在grep的某个地方检查了E(Error)是否出错
input {

  file {
  type => "database"
  path => "/home/nakampe/Desktop/file.log"
  }

}

filter {

 grok {

    pattern =>  "[%{MONTHDAY:date} / %{MONTH:month} / %{YEAR:year}  %{TIME:time}] %WORD:application} %{WORD:levelType}  %{WORD:message}"

  }


#Here I want to only consider log levels of E (ERROR) and not others
  grep{

  match => ["levelType", "E"]

  }

}

output {

   elasticsearch {

   embedded => true
   }

stdout {
  message => "%{@message}"
  }
}

最佳答案

 grok {

pattern =>  "%{MONTHDAY:date}/%{MONTHNUM:month}/%{YEAR:year} %{TIME:time} %{WORD:sast}]

    %{INT:threadId} %{WORD:applicationName}%{SPACE:space}%{WORD:logLevel} %     {WORD:errorMessage}"

}

我的错误在于模式,使用http://grokdebug.herokuapp.com/调试后一切正常。一个非常有用的工具。

关于logstash - 过滤特定行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18208412/

10-09 03:08