現在、ログ ファイルから特定の行をフィルタリングしようとしています。ログファイルの私の行は次のパターンです。
[8/05/13 14:24:55.468] RuntimeErrorI E LaError
[8/05/13 14:24:55.468] AbcdEfg W SomeWarning
最初は日付、時刻、アプリケーション名、およびログ レベル (警告、エラー、トレースなど) で、その後にエラー メッセージ、警告メッセージ、またはその他のメッセージが続きます。
したがって、取得しようとしているのは、ログ レベル エラーのみであり、他のログ レベルではありません。私は遊んでいる次のものを持っていますが、コンソール出力がまったく得られません。E(エラー)かどうかを確認するために、grepのどこかで間違いを犯していると思います
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}"
}
}