在单个Graylog2消息中聚合多个记录器调用

时间:2014-06-18 21:39:27

标签: ruby-on-rails logging multiline graylog2

我目前正在设置我的Rails(此时为3.2,尽管它在dev分支上的4.1下运行)应用程序,使用lograge和{{3将日志发送到集中式Graylog2日志聚合服务器宝石。 config(在环境文件中)看起来像:

config.lograge.enabled = true
config.lograge.log_format = :graylog2
config.logger = GELF::Logger.new("log1.example.com", 12201, "WAN", { :host => "dev", :facility => "rails" })

这一切都适用于与每个请求关联的“主”200 OK日志消息。问题是我的控制器代码有其他logger.info,logger.warn等...散布在代码库周围。这些消息中的每一个都记录为单独的GELF消息信息Graylog2。

我希望看到的是,单个HTTP请求的所有日志消息都捆绑在一起,形成Graylog2中的单个日志消息,而不是将大量孤立的日志消息与其关联的HTTP请求无关。换句话说,对于每个HTTP请求,lograge输出以及所有logger。*调用应该一起形成graylog2可以管理的单个日志行。

我在这里缺少什么?看起来这不应该是一个不寻常的需求,但我没有看到任何不涉及我编写另一个自定义记录器的东西。

1 个答案:

答案 0 :(得分:1)

我建议将每个请求的相关ID添加到应该聚合的每个日志行。稍后进行correlation_id:550e8400-e29b-41d4-a716-446655440000之类的搜索并查看所有相关消息。

(您可以通过单击Graylog2 Web界面中的值来执行搜索)