TOP>>OBAQ>>ロギング 概略ツアー<OBAQ>構成定義アプリケーションサーバリファレンスサイトマップ

ログ出力メソッド


ログの出力

ログカテゴリオブジェクトに対してinfo等のメソッドを呼び出すとログが出力されます。 どのメソッドも以下の二種類の書き方があります。

  • log.info("sample message")
  • log.info{ "sample message" }

後者({...}という形式)は、 プライオリティの設定で出力されない場合に出力メッセージを構成する式を評価しません。

log.set_priority(LOG_INFO)
log.debug ( very_heavy_method1() )
log.debug { "message " + very_heavy_method2() }

この場合、very_heavy_method1は実行されます。 そして、その返却値がdebugメソッドに渡されて、 プライオリティが低いので結局出力されないで捨てられます。 つまり、very_heavy_method1の処理が無駄になります。

それに対して {...} の形式を使用した場合は、 プライオリティによる出力の有無を判定してから、{...}の評価を行ないます。 ですから、この例では very_heavy_method2は実行されません。

従ってほとんどの場合、log.debug { ... } という記述は、テスト完了後も削除する必要はありません。

p()メソッド

log.p { some_object }

この形式を使用すると、some_object.inspectの結果がdebugメソッドで出力されます。 デバッグのため変数の値を出力する時に便利です。


ページトップへ