我们有一个RoR应用程序(Rails版本3.2.15)。 随着业务越来越繁忙,它所生成的日志文件对于故障排除的作用越来越小。 当他们进来时,这不是问题:
开始GET“/ accounts / 28088166 / kittens / 22894 / rendered_png?file_id = 5d3eaec77954a489b5ddd75143091767&kitten_store_id = 9970569bbacf7b6dbeb4eb9295960d69&size = large”for 172.16.202.30 at 2013-11-12 13:45:00 +0000
将KittenController#rendered_png处理为HTML
参数:{“file_id”=>“5d3eaec77954a489b5ddd75143091767”,“kitten_store_id”=>“9970569bbacf7b6dbeb4eb9295960d69”,“size”=>“large”,“kitten_cam_id”=>“280941”,“id”=>“kjlak357aw479607t”}
渲染文本模板(0.0ms)
发送数据(1.8ms)
在1037.4ms完成200行(观看次数:1.4ms | ActiveRecord:98.4ms)
短的请求,迅速汇编,所有相关的日志在一个块。
但是,并非我们所有的代码都在1037ms内呈现。 有几个呼叫可以超过几秒钟,在这段时间内,这些更快的几个可以进来(我们正在运行多个Passenger实例)。 当发生这种情况时,很难确定哪些日志行属于哪个GET 。 获得这样的日志行并不罕见:
Sent data (4.1ms) Completed 200 OK in 947.1ms (Views: 230.9ms | ActiveRecord: 56.8ms) Completed 200 OK in 767.4ms (Views: 3.2ms | ActiveRecord: 72.2ms) Completed 200 OK in 2338.0ms (Views: 0.2ms | ActiveRecord: 0.0ms)
Ooookaaaay哪个GET去什么“处理”行?
是否有可能像这样的事务ID添加到这些日志行? 日志垃圾邮件将穿插,但至lessgrep魔术会给我统一的条目,我需要。
您可以尝试使用ActiveSupport::TaggedLogging – 这是Rails自己的指南中推荐的方法 – 但ActiveSupport::TaggedLogging的一面是您将不得不自己提供唯一的ID。
lograge gem提供了一个更加紧凑的单行日志,并且可能更接近你之后的内容。