| TOP>>OBAQ>>ロギング | 概略 | ツアー | <OBAQ> | 構成定義 | アプリケーションサーバ | リファレンス | サイトマップ |
ログの出力ログカテゴリオブジェクトに対してinfo等のメソッドを呼び出すとログが出力されます。 どのメソッドも以下の二種類の書き方があります。
後者({...}という形式)は、 プライオリティの設定で出力されない場合に出力メッセージを構成する式を評価しません。 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メソッドで出力されます。 デバッグのため変数の値を出力する時に便利です。 |