Назад | Перейти на главную страницу

Добавление идентификатора транзакции в журналы ruby-on-rails

У нас есть приложение RoR (сейчас rails версии 3.2.15). По мере того, как он становится все более загруженным, создаваемые им файлы журнала становятся все менее и менее полезными для устранения неполадок. Когда они вот так входят, это не проблема:

Started 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
Processing by KittenController#rendered_png as HTML
  Parameters: {"file_id"=>"5d3eaec77954a489b5ddd75143091767", "kitten_store_id"=>"9970569bbacf7b6dbeb4eb9295960d69",  "size"=>"large", "kitten_cam_id"=>"280941", "id"=>"kjlak357aw479607t"}
  Rendered text template (0.0ms)
Sent data   (1.8ms)
Completed 200 OK in 1037.4ms (Views: 1.4ms | ActiveRecord: 98.4ms)

Короткий запрос, быстро собирается, все актуальные логи в одном блоке.

Однако не весь наш код обрабатывается за 1037 мс. Есть несколько вызовов, которые могут превышать несколько секунд, и за это время могут поступить несколько из этих более быстрых (мы запускаем несколько экземпляров 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)

Оооокаааай ... какой GET идет в какие строки "Обработка"?

Можно ли добавить в эти строки журнала что-то вроде идентификатора транзакции? Журнал-спам будет перемежаться, но, по крайней мере, grep-magic даст мне унифицированные записи, которые мне нужны.

Вы можете попробовать использовать ActiveSupport::TaggedLogging - это метод рекомендуется в собственных руководствах Rails - но обратная сторона заключается в том, что вам придется предоставить уникальный идентификатор самостоятельно.

В lograge gem предоставляет гораздо более компактный однострочный журнал и может быть ближе к тому, что вам нужно.