0

我目前正在设置我的 Rails(此时为 3.2,尽管它在 dev 分支上运行在 4.1 下)应用程序以使用logragegelf-rb gem 将其日志发送到集中的 Graylog2 日志聚合服务器。配置(在环境文件中)如下所示:

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 可以管理的单个日志行。

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

4

1 回答 1

1

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

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

于 2014-06-19T09:46:12.930 回答