« [Ruby][Rails] HTTPレスポンスのヘッダ折りたたみ。 | メイン | [Rails] SQLiteアダプタのtime型のマッピング修正。 »

[Ruby][Rails] ログ出力フォーマットを変えたい!

こんにちわ。ばたっちです。

Rails標準のLoggerは、ログ出力フォーマットを簡単にいじれないっていうけど、ホント簡単にはできない。。orz

以下の方法でできたので覚書。もっといい方法があるだろうけど。

  • active_support の clean_logger.rb を lib/ 以下にコピー。
    (標準 Logger には独自の Formatter を設定できるんだけどバグってるぽくて、 その辺の修正とかされているみたい)
  • lib/以下に Formatter の拡張クラスを作る。
    
    class MyFormatter < Logger::Formatter
      Format = "[%s] %s:%s: %s\n"
      def call(severity, time, progname, msg)
        Format % [format_datetime(time), severity, progname, msg2str(msg)]
      end
      private
        def format_datetime(time)
          time.strftime("%Y-%m-%d %H:%M:%S.") << "%06d" % time.usec
        end
    end
    ----
    こんなログイメージ。
    =>[2008-01-24 00:00:00.000000] INFO:user/login: ログインしたす。
    
  • config/environment.rb で RAILS_DEFAULT_LOGGER に Formatter を設定。
    
    RAILS_DEFAULT_LOGGER = Logger.new("#{RAILS_ROOT}/log/#{RAILS_ENV}.log")
    RAILS_DEFAULT_LOGGER.formatter = MyFormatter.new
    

ちょっと面倒だけど、なんでもできてしまうものですね。(^^)v

トラックバック

このエントリーのトラックバックURL:
http://pw.tech-arts.co.jp/cgi-bin/tamt32/mt-tb.cgi/64

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)