logstash和monolog格式化程序

时间:2014-12-08 09:15:58

标签: logging logstash monolog

我使用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没有解析它,它只是将所有字符串放在消息中。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

日志以JSON消息形式出现,因此您需要使用正确的编解码器:

input {
  stdin {
    codec => json
  }
}

与此无关,请注意,monolog显然会生成适合旧版Logstash的日志消息,其中的消息是'字段被命名为' @ message'等等。您应该使用mutate filter运行更新的monolog或重命名字段。