我尝试将日志文件的loglevel与grok过滤器匹配,但仍然得到_grokparsefailure。问题可能是[和日志级别之间的空间。
日志示例:2017-04-21 10:12:03,004 [INFO]消息
我的过滤器:
filter {
grok {
match => {
"log.level" => "\[ %{LOGLEVEL:loglevel}\]"
}
}
}
我也尝试了其他一些解决方案但没有成功:
"\[ *%{LOGLEVEL:loglevel}\]"
"\[%{SPACE}%{LOGLEVEL:loglevel}\]"
提前感谢您的帮助
答案 0 :(得分:0)
点是默认字段是消息,您需要匹配所有字符串
filter {
grok {
match => {
"message" => "%{TIMESTAMP_ISO8601:logDate} \[ %{LOGLEVEL:loglevel}\]%{GREEDYDATA:messages}"
}
}
}
答案 1 :(得分:0)
问题出在过滤器中的选项match
上:此选项是一个哈希值,它告诉过滤器要看哪个字段和要看哪个字段。
您的正则表达式很好(您可以使用http://grokconstructor.appspot.com/do/match进行检查),问题出在字段名称上;应该是message
。
因此,在您的情况下,您的过滤器应如下所示:
grok {
match => {
"message" => "\[ %{LOGLEVEL:loglevel}\]"
}
}