Rails3 系のロギング設定

Pocket

Rails のデフォルトのロガーだとログレベルだとか日時が出力されないのでログとしてあまり意味がありません。

config/environment.rb の一番最後に以下の記述を追加してください。

class Logger
  class Formatter
    def call(severity, time, progname, msg)
      format = "[%s #%d] %5s -- %s: %sn"
      format % ["#{time.strftime('%Y-%m-%d %H:%M:%S')}.#{'%06d' % time.usec.to_s}",
                  $$, severity, progname, msg2str(msg)]
    end
  end
end

Rails 3.0 系の場合

config/environments/development.rb に以下の記述を含めます。

config.logger = Logger.new(paths.log.paths[0])
  config.logger.formatter = Logger::Formatter.new
  config.logger.datetime_format = "%Y-%m-%d %H:%M:%S"
  config.logger.level = Logger::DEBUG
  config.colorize_logging = false

Rails 3.1 系の場合

3.1 系の場合は上の書き方だと deprecation warning が発生します。

$ rails server
=> Booting WEBrick
=> Rails 3.1.0 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
DEPRECATION WARNING: Accessing paths using dot style as in `config.paths.app.controller` is deprecated. Please use `config.paths["app/controller"]` style instead. (called from exist? at /home/noguchi/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/logger.rb:541)

代わりに次の記述をしてください。

  config.logger = Logger.new(config.paths["log"].first)
  config.logger.formatter = Logger::Formatter.new
  config.logger.datetime_format = "%Y-%m-%d %H:%M:%S"
  config.logger.level = Logger::DEBUG
  config.colorize_logging = false

結構しんどい。

参考

Rails3.1.0へのupgrade方法 – うんたらかんたら日記

投稿者紹介

株式会社ユニキャスト
私たちは、テクノロジに魅せられた個性あふれるメンバーによって構成された茨城県日立市に本社を構えるベンチャー企業です。
”テクノロジを通して「驚き」と「感動」を創造し、人々の「夢」と「笑顔」を支えます。” の経営理念をモットーに明るい未来を描き、ワクワクする企画提案を続けて参ります。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください