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

ログライブラリの機能


LOGライブラリの機能

Obaq::Logライブラリ(以下ではLOGライブラリと呼びます)は、 コンソールメッセージ(オペレータへの通知)とデバッグや障害解析の為に必要なデータの出力を統一的に扱う ためのライブラリです。以下の特色があります。

  1. 出力の有無を柔軟に切り替えられる

    通知/警告/エラーといったメッセージの重要度や出力するモジュールなどによって、 メッセージの出力有無を柔軟に切り替えられます。 ソースの修正なしに、簡単な設定ファイルを書き換える(切り換える)ことで、 出力方法を自由に設定できます。

  2. 出力先を自由に指定

    デバッグ中はメッセージをコンソールに出力し、 本番運用ではsyslogや指定したファイルに出力するといった切り替えが簡単にできます。 運用開始後に再度デバッグを行う場合でも、 ソースを修正せずにメッセージをコンソール(端末)に出力することができます。 また、ひとつのログを複数の出力先に出力し、 出力先ごとにレベルやフォーマットを変更することもできます。

  3. きめ細い指定

    複数のログ出力を階層化されたログカテゴリという概念で管理します。 詳細は次項で説明します。

  4. 極力低い負荷

    ログを出力しないように設定した場合は、 ログ出力命令を実行しても余計な負荷がかかりません。 よほどのクリティカルな部分以外は、ログ出力を削る必要がありません。

    ただし、ログを出力する設定にした時は、負荷(性能)よりは柔軟性重視の設計になっています。

  5. デバッグ時に便利な出力

    デバッグ用の設定では、出力時刻とログを出力した行のソースファイル名、行番号、メソッド名、クラス名が出力できます。 設定で、この項目の中から必要なものだけを出力できます。

  6. カスタマイズが容易

    自分で書いたクラスを組みこみ、 出力先やフォーマットなどをカスタマイズすることも容易です。

カテゴリによる階層的な設定

プログラムは次のような記述で、カテゴリを指定してログを出力します。

log = Log::lgc.get_category("msg.db")
log.info("opend DB connection")

そして、設定ファイルでそのカテゴリに対して、 出力先や出力レベルを指定します。

LogConfig msg.db
  priority=INFO output=SYSLOG

カテゴリはドットで区切られた階層構造になっていて、 上位の設定を継承するようになっています。 もし、msg.dbに対する指定がなければ、msgに対する指定に従って処理されます。

このカテゴリシステムを活用することで、 デバッグ時に特定のクラスの出力以外を抑制したり、 運用時にコンソールには重大なエラーのみ表示して、 ファイルには運用状態を詳細通知するメッセージも記録しておく、 等といったことがソースの修正なしで簡単にできます。

ログのレベル(プライオリティ)

ログには、LOG_DEBUG〜LOG_FATALまでのプライオリティがあります。 LOG_DEBUGはデバッグ用メッセージ、 LOG_INFOは通知メッセージ、LOG_WARN,LOG_ERROR,LOG_FATALはそれぞれ重要度に応じたエラーメッセージに使用します。

出力時のプライオリティは、出力メソッドで指定します。 LOG_INFOレベルのログを出力するにはinfoメソッドを使用します。 他のレベルも同様です。

ログカテゴリにもプライオリティを設定します。 ログカテゴリは、自分のプライオリティ以上のメッセージのみ出力します。


ページトップへ