我目前正在設置我的Rails(此時爲3.2,儘管它在dev分支上運行於4.1下)應用程序將其日誌發送到集中式Graylog2日誌聚合服務器,使用lograge和gelf-rb寶石。配置(在環境文件中)如下所示:在單個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輸出以及所有記錄器。*調用應該組合在一起形成一個可由graylog2管理的日誌行。
我在這裏錯過了什麼?看起來這不是一個不常見的需求,但我沒有看到任何不涉及我寫另一個自定義記錄器的事情。