2011年12月12日月曜日

デバッグ用の文字列をログファイルに書き出す

実行環境:
ruby 1.9.3
Rails 3.1.3
Rails3 でデバッグ用の文字列を書き出す方法。めっちゃ基本事項ですが、久々に Rails に触ったらまるっきり忘れていたのでメモ (^^;

ログファイルに書き出す

Railsの実行時に処理されるコードの中で
logger.debug("ログに吐き出す文字列")
と書いておけば、ログファイル(#{RAILS_ROOT}/log/**********.log)に書き出されます。
「************」の部分は実行モード名が入ります。
developmentモードならdevelopment.log、productionモードならproduction.logちうわけです。
ただし、デフォルトの設定だとproductionモードでは logger.debug は記録されません。
ログの内容にはレベルがありproductionモードでは実行に影響ないものは残さない、ということなのでしょう。

ログレベル
  • logger.fatal
  • logger.error
  • logger.warn
  • logger.info
  • logger.debug

productionモードで無理やりlogger.debugをログに残す場合はproductionモードの環境設定ファイルで設定します。
#{RAILS_ROOT}/config/environments/production.rb
config.log_level = :debug


オブジェクトの中身を記録する

デバッグしていると、このオブジェクトの中身はどうなっているんだろう?ってことがよくあります。
文字列や数字の変数ならそのまま var.to_s や "%s"%var で文字列化してしまえばいいですが、オブジェクトでそれをやると #<ClassName:0xXXXXXXX> みたいな訳分からん文字になってしまいます。
そんなときは .inspect を使うと便利。
logger.debug(var.inspect)
これまたド忘れしてたのでメモしておくのであります。

0 件のコメント:

コメントを投稿