我有一个包含不同输出格式的日志文件。
例如:
line 1 = 2015-01-1 12:04:56 INFO 192.168.0.1 my_user someone logged in
line 2 = 2015-01-1 12:04:56 WARN [webserver-thread] (MyClass.java:66) user authenticated
虽然真正的解决方案是将它们拆分为单独的文件或统一格式,是否可以使用Logstash来处理不同的日志格式?
答案 0 :(得分:3)
我的第一个建议是运行一个grok {}去除常见的东西 - 日期时间和日志级别。您可以将剩余的内容放回[消息]字段中:
%{TIMESTAMP_ISO8601} %{WORD:level} %{GREEDYDATA:message}
请务必使用'覆盖' grok {}中的参数。
然后,如果你想解析剩余的信息,那么你的(多个)正则表达式将针对一个较短的字符串运行,这会使它们更有效。
然后您可以拥有多种模式:
grok {
match => [
"message", "PATTERN1",
"message", "PATTERN2"
]
}
默认情况下,grok会在遇到第一场比赛时停止处理。