24

Railsがログを取りすぎないようにするにはどうすればよいですか? これは私の production.log ファイルの典型的なトレースです。多くのパーシャル、キャッシュ ヒット... 開発では便利ですが、実稼働環境では使用したくありません。

Started GET "/?redirected=true" for 46.193.131.53 at 2012-08-16 18:39:20 +0200
Processing by HomeController#index as HTML
  Parameters: {"redirected"=>"true"}
  Rendered application/_successfully_connected.html.haml (0.8ms)
  Rendered hotspot_infos/_infos.html.haml (0.4ms)
  Rendered application/_hotspot_infos.html.haml (1.8ms)
  Rendered application/_news.html.haml (0.3ms)
Read fragment views/social-zone-341-directory (0.5ms)
  Rendered application/_directory.html.haml (2.5ms)
  Rendered application/_meteo.html.haml (1.1ms)
  Rendered application/_notifications.html.haml (0.8ms)
  Rendered application/_like_button.html.haml (0.3ms)
  Rendered application/_navbar.html.haml (4.2ms)
  Rendered application/_connection.html.haml (0.5ms)
  Rendered application/_gallery.html.haml (0.2ms)
  Rendered application/_search_bar.html.haml (0.4ms)
  Rendered pictures/_picture_frame.html.haml (0.3ms)
  Rendered application/_profile_preview.html.haml (1.4ms)
  Rendered application/_profile_block.html.haml (1.7ms)
  Rendered application/_menus.html.haml (3.3ms)
  Rendered application/_left_pane.html.haml (5.5ms)
  Rendered application/_langs.html.haml (0.8ms)
  Rendered application/_footer.html.haml (1.9ms)
  Rendered application/_flash_modal.html.haml (0.1ms)
  Rendered application/_connection_required.js.erb (0.2ms)
Completed 200 OK in 159ms (Views: 25.5ms | ActiveRecord: 88.0ms)

ご協力いただきありがとうございます

PS: Rails 3.2.6 を使用しています。

4

4 に答える 4

32

Rails 4 では、ログをクリーンアップする設定があります。

config.action_view.logger = nil

Rails 3 でこれを実現するには、ActionView にモンキー パッチを適用する必要があります。

module ActionView
  class LogSubscriber < ActiveSupport::LogSubscriber
    def logger
      @memoized_logger ||= Logger.new('/dev/null')
    end
  end
end
于 2012-08-17T10:00:27.760 に答える
6

別の方法で設定する必要がありますconfig.log_levelログ レベルについて学習します。

たとえば、次を追加しますconfig/evironments/production.rb

config.log_level = :warn

あなたのものはおそらく:debugまたはに設定されてい:infoます。

于 2012-08-16T17:49:58.990 に答える
4

これをイニシャライザに入れ、特定のログをモンキーパッチして、情報の代わりにデバッグに移動します。

module ActionView
  class LogSubscriber
    def render_template(event)
      message = "Rendered #{from_rails_root(event.payload[:identifier])}"
      message << " within #{from_rails_root(event.payload[:layout])}" if event.payload[:layout]
      message << " (#{event.duration.round(1)}ms)"
      debug(message)
    end
    alias :render_partial :render_template
    alias :render_collection :render_template
  end  
end

module ActionController
  class LogSubscriber
    # Use debug logging for read_fragment
    # %w(write_fragment read_fragment exist_fragment? expire_fragment expire_page write_page).each do |method|
    %w(read_fragment).each do |method|
      class_eval <<-METHOD, __FILE__, __LINE__ + 1
        def #{method}(event)
          return unless logger.info?
          key_or_path = event.payload[:key] || event.payload[:path]
          human_name  = #{method.to_s.humanize.inspect}
          debug("\#{human_name} \#{key_or_path} (\#{event.duration.round(1)}ms)")
        end
      METHOD
    end
  end
end
于 2013-07-26T15:45:44.570 に答える