&tag(Rails3/ログ出力の改善);
*目次 [#w9a527b6]
#contents
*参考情報 [#teab3dd8]
-[[Logger!!!(ログにタイムスタンプを追加する方法) - rochefort's blog:http://rochefort.hatenablog.com/entry/20100310/p1]]
-[[rails3.1.1でLoggerクラスを使ってログ出力を改善するメモ - やぶろぐ:http://d.hatena.ne.jp/hellon999/20111112/1321071045]]

*ログにタイムスタンプを追加する。 [#pd66bc75]
-environment.rbに以下を追加。
#pre{{
class Logger
  class Formatter
    def call(severity, time, progname, msg)
      format = "[%s] %s %s\n"
      format % ["#{time.strftime('%Y-%m-%d %H:%M:%S')}", severity, msg2str(msg)]
    end
  end
end
}}
-development.rb、production.rbなどでログ上記Loggerを使うように設定する。
#pre{{
  config.logger = Logger.new(config.paths["log"].first)
  config.logger.formatter = Logger::Formatter.new
  config.logger.level = Logger::DEBUG
  config.colorize_logging = false
}}

*assetのログを非表示にする [#v5a68e34]
-assetパイプラインのログが大量に表示されてうっとしい場合、以下のconfig/initializers/queit_assets.rbを作る。[[How to disable logging of asset pipeline (sprockets) messages in Rails 3.1? - Stack Overflow:http://stackoverflow.com/questions/6312448/how-to-disable-logging-of-asset-pipeline-sprockets-messages-in-rails-3-1]]
#pre{{
if Rails.env.development?
  Rails.application.assets.logger = Logger.new('/dev/null')
  Rails::Rack::Logger.class_eval do
    def call_with_quiet_assets(env)
      previous_level = Rails.logger.level
      Rails.logger.level = Logger::ERROR if env['PATH_INFO'] =~ %r{^/assets/}
      call_without_quiet_assets(env)
    ensure
      Rails.logger.level = previous_level
    end
    alias_method_chain :call, :quiet_assets
  end
end

}}


*ActiveRecordのSQLを表示しない [#o7941be2]
-config.logger.level = Logger::INFOにすると表示されない。
-もしくはconfig/initializers/quiet_sql.rbで、loggerをnilに設定する。[[Disable Rails 3.1 SQL logging - Stack Overflow:http://stackoverflow.com/questions/7759321/disable-rails-3-1-sql-logging]]
#pre{{
ActiveRecord::Base.logger = nil
}}


トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS