我使用monolog logstashFormater来创建我的日志,而不是将其插入到我的logstash中。
以下是monolog创建的日志示例:
{"@timestamp":"2014-12-08T09:07:54.810335+00:00","@source":"devServer","@fields":{"channel":"orderLogger","level":100,"ctxt_site":"roulette","ctxt_country":"uk","ctxt_type":"virtual"},"@message":"order","@tags":["orderLogger"],"@type":"core"}
它适用于logstash, 现在我用这个配置加载logstash
input {
stdin { }
}
output {
stdout { codec => rubydebug }
}
但是现在我尝试从monolog粘贴创建的日志,我得到了这个:
{
"message" => "{\"@timestamp\":\"2014-12-08T09:07:54.810335+00:00\",\"@source\":\"devServer\",\"@fields\":{\"channel\":\"orderLogger\",\"level\":100,\"ctxt_site\":\"roulette\",\"ctxt_country\":\"uk\",\"ctxt_type\":\"virtual\"},\"@message\":\"order\",\"@tags\":[\"orderLogger\"],\"@type\":\"core\"}",
"@version" => "1",
"@timestamp" => "2014-12-08T09:08:24.800Z",
"host" => "logstash"
}
所以你可以看到,logstash没有解析它,它只是将所有字符串放在消息中。
有什么想法吗?
答案 0 :(得分:1)
日志以JSON消息形式出现,因此您需要使用正确的编解码器:
input {
stdin {
codec => json
}
}
与此无关,请注意,monolog显然会生成适合旧版Logstash的日志消息,其中的消息是'字段被命名为' @ message'等等。您应该使用mutate filter运行更新的monolog或重命名字段。