[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