動作中のログをとる
debugger で止めて、p ??? で変数の内容見て、c で次の debugger へ、なんてことをやってましたが埒があきません。ちゃんとログとって見るべきです。
Rubyでのloggerの超簡単な使い方
require 'logger' class Hoge def initialize @log = Logger.new(STDOUT) @log.level = Logger::DEBUG end # Hogeクラス内の使いたいところで @log.debug("vals=#{vals}\n")
require 'logger' して、new() して、level を設定するだけでOK。
Railsでの超簡単な使い方
Railsでは logger クラスがすでにあるので、なにもしないで使いたいところで、こんなふうにやるだけ。
logger.debug("cond=#{cond}\n")
もっと早くやっとけばよかったよ。ただ、Rails本体(Action???)が吐き出すログの中に埋没してしまうので、書き方を工夫するか、素直に /log/development.log などのファイルをエディタで見たほうがいい。
ちゃんとした情報も少し
- logger.level = Logger::INFO
DEBUG=0 < INFO < WARN < ERROR < FATAL < UNKNOWN=5
例えば、ERRORを指定すると、ERROR, FATAL, UNKNOWN の3レベルのログが出力されます。 - datetime_format=
ログを記録する時のフォーマット
デフォルトは "%Y-%m-%dT%H:%M:%S.%06d " - debug(progname = nil){ ... }
DEBUGレベルのメッセージ。引数としてプログラム名が指定できる - info(progname = nil){ ... }
- warn(progname = nil){ ... }
- error(progname = nil){ ... }
- fatal(progname = nil){ ... }
- level=
重要度を設定する - progname=
ログに記録するプログラム名を設定する
参考
- リファレンスはこちら(→プログラミング言語 Ruby リファレンスマニュアル)