アクトインディ開発者ブログ

子供とお出かけ情報「いこーよ」を運営する、アクトインディ株式会社の開発者ブログです

Rails のログを寡黙に

こんにちは、tahara です。

Rails のプロダクションログですが

Started GET "/" for 127.0.0.1 at 2011-12-11 13:32:11 +0900
  Processing by TopController#index as HTML
Rendered shared/_login_box.html.erb (1.2ms)
Rendered top/_header.html.erb (2.3ms)
Rendered shared/_oneline_finder.html.erb (129.7ms)
Rendered shared/_teiban_spot_working.html.erb (0.3ms)
Rendered inline template (0.4ms)
Rendered top/_top_pr.html.erb (0.2ms)
Rendered top/_experiences.html.erb (310.6ms)
Rendered top/_ranking.html.erb (38.5ms)
Rendered inline template (0.3ms)
Rendered inline template (0.3ms)
Rendered shared/ad/pc/_osusume_jouhou.html.erb (9.3ms)

Rendered で始まる行が多過ぎです。 これをちょっと黙らせたいと思います。

http://stackoverflow.com/questions/6377190/modify-log-format-and-content-from-default-actioncontroller-logsubscriber-in-rai を参考に

config/initializers/log_unsubscribe.rb

if Rails.env.production?
  # unsubscribe ActionView::LogSubscriber
  ['render_template', 'render_partial', 'render_collection'].each do |event|
    ActiveSupport::Notifications.notifier.listeners_for("#{event}.action_view").each do |x|
      ActiveSupport::Notifications.unsubscribe(x)
    end
  end

  # unsubscribe xxx_fragment
  %w(write_fragment read_fragment exist_fragment? expire_fragment expire_page write_page).each do |event|
    ActiveSupport::Notifications.notifier.listeners_for("#{event}.action_controller").each do |x|
      ActiveSupport::Notifications.unsubscribe(x)
    end
  end
end

これでプロダクション環境では、レンダーとフラグメントのログが出力されなくなりました。

最後に、エンジニア募集中です。