Rails3 で Log4r を使ってログを出す

Rails3 で Log4r を使ってログを出すには・・・
色々調べた結果、Rails3 でのログの出し方、Log4r はわかったのだが、Rails3 で
Log4r を出力するやり方がなかったのでメモ。

参考にしたのは下記サイト
Ruby on Rails Guides: Debugging Rails Applications
ログにタイムスタンプを追加する
log4rの基本的な使い方のメモ
を見て、Gemfile に1行


gem 'log4r'
を追加し、bundle install して :rails_root/config/application.rb に以下の記述を追加する。

# ログを Log4r を使って apache っぽい形式にする
formatter = Log4r::PatternFormatter.new(
:pattern => "%d %C [%l]: %M",
:date_format => "%Y/%m/%d %H:%M:%S"
)
outputter = Log4r::StdoutOutputter.new(STDOUT, :formatter => formatter)
logger = Log4r::Logger.new("MyApp")
logger.add(outputter)
config.logger = logger
すると、

Started GET "/users/3" for 192.168.24.52 at Fri Jan 28 18:18:43 +0900 2011
2011-01-28 18:18:43 MyApp [INFO]: Processing by UsersController#show as HTML
2011-01-28 18:18:43 MyApp [INFO]: Parameters: {"id"=>"3"}
2011-01-28 18:18:43 MyApp [DEBUG]: User Load (0.7ms) SELECT `users`.* FROM `users` WHERE (loginId = '****' AND loginPw = '****' AND state = '1') LIMIT 1
2011-01-28 18:18:43 MyApp [DEBUG]: ************************ user_id
2011-01-28 18:18:43 MyApp [DEBUG]: Fixnum: 3
2011-01-28 18:18:43 MyApp [DEBUG]: Profile Load (0.7ms) SELECT `profiles`.* FROM `profiles` WHERE (user_id = 3) LIMIT 1
2011-01-28 18:18:43 MyApp [DEBUG]: Recorder Load (0.6ms) SELECT `recorders`.* FROM `recorders` WHERE (user_id = 3 AND preservation = '2011-01-28') LIMIT 1
2011-01-28 18:18:43 MyApp [DEBUG]: Recorder Load (0.4ms) SELECT `recorders`.* FROM `recorders` WHERE (user_id = 3) ORDER BY preservation ASC
2011-01-28 18:18:43 MyApp [DEBUG]: Array: [80.0]
2011-01-28 18:18:43 MyApp [DEBUG]: Array: [25.0]
2011-01-28 18:18:43 MyApp [INFO]: Rendered users/_record.html.erb (22.5ms)
2011-01-28 18:18:43 MyApp [INFO]: Rendered users/show.html.erb within layouts/application (70.7ms)
2011-01-28 18:18:43 MyApp [INFO]: Completed 200 OK in 279ms (Views: 82.8ms | ActiveRecord: 2.5ms)
2011-01-28 18:18:46 MyApp [INFO]:
というログが出るようになりました。