我有一个如下日志条目: -
2014-10-13 16:42:46,946 [1] DEBUG SolaceManager - Creating Solace session: Host=abc,
VPN=xyz, User=indiana, ConnectRetries=-1, SendBlocking=True
要使用grok解析它,我在logstash中使用了以下模式: -
%{TIMESTAMP_ISO8601:Logdate} \[%{NUMBER:ThreadId}\] %{WORD:LogLevel} ?%{GREEDYDATA:data}"
以上代码不起作用,我收到以下消息: -
1) @message= 2014-10-13 16:42:46,946 [1] DEBUG SolaceManager - Creating Solace session:
2) @message= Host=abc,
3) @message= User=indiana,
4) @message= ConnectRetries=-1,
5) @message= SendBlocking=True
这不是预期的,我需要一条消息: -
@message = 2014-10-13 16:42:46,946 [1] DEBUG SolaceManager - Creating Solace session: Host=abc,
VPN=xyz, User=indiana, ConnectRetries=-1, SendBlocking=True
换句话说,有没有办法确保只有时间戳作为分隔符?
答案 0 :(得分:1)
你是否尝试在grok匹配之后添加一个mutate,如
grok {
match => {
"message" => "%{TIMESTAMP_ISO8601:Logdate} \[%{NUMBER:ThreadId}\] %{WORD:LogLevel} ?%{GREEDYDATA:data}"
}
}
mutate {
replace => [ "@message", "%{message}" ]
remove_field => [ "message" ]
}
这应该在@message字段中添加完整的消息