我目前正在设置我的 Rails(此时为 3.2,尽管它在 dev 分支上运行在 4.1 下)应用程序以使用lograge和gelf-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 可以管理的单个日志行。
我在这里想念什么?看起来这不应该是一个不常见的需求,但我没有看到任何不涉及我编写另一个自定义记录器的东西。