我目前正在尝试从日志文件中过滤特定行。我在日志文件中的行具有以下模式。
[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/