rubyベストプラクティスchapter6.4

おぉ7月2回目の日記かぁ。。。
rubykaigi2011にもいってるから書こうと思えばネタあるのになぁ。。。
淡々と読書日記を書きます。

Loggerクラスの使い方

使いたいなぁと思いつつ、なんとなく使わずにすんでいたLoggerクラス。
ここにのっているStandarderror#reportをそのまま使うとエラーはく時のバックトレースがlogに記録されて便利。

class StandardError
  def report
    %{#{self.class}: #{message}\n#{backtrace.join("\n")}}
  end
end

これを使ってエラーが発生しそうなところにbegin rescue endでかこってあげれば、rail
sのログっぽく出力される。
StandardErrorにメソッドを追加しているので、ほとんどのエラーでreportメソッドは使用出来る。

例えばこんな感じ。

def hoge
  # 何か処理
rescue StandardError => e     #ここでエラーを捕捉
  @logger.error(e.report)     #ここでreportメソッドを使っている
end

Loggerクラスってのはログを出力する時にはメソッドを起動してあげればいいんですな。

Logger#error   #エラーのログ
Logger#info    #通常のログ
Logger#fatal   #???

本の中ではfatalってどうしようもないエラーみたいなあつかいだったけどどうなんでしょ?
fatalって「致命的な」とか「破壊的な」とかいう形容詞みたい。


Rubyベストプラクティス -プロフェッショナルによるコードとテクニック

Rubyベストプラクティス -プロフェッショナルによるコードとテクニック