[C1.8]システムロギングクラス
KONOEでは非常にたくさんのプロセスがネットワーク上に分散して並列動作
することになります。そのため、それぞれのプロセスが何かを通報しようと
すると、それぞれの標準出力をみるというわけにいかないので、なんらかの
メッセージロギング機構が必要になります。
ネットワーク上に分散した様々なプロセスは、報告が義務づけられた事象に
出会ったときは必ずシステムロガーに通報します。どのような事象に通報
義務があるかはそれぞれのアプリケーションのコンテキストから規定でき
なければなりません。
ログが要求されるメッセージにはいくつかの情報が追加されます。例えば
そのメッセージの重大度だとか、発生元の識別だとか、オペレータ要求の
有無など。必ずしも受けてのシステムロガーは全てのメッセージを知っている
わけではないので、そういった情報はメッセージに含まれなければならない
かもしれません。
1.ロギングシステムの設計
1.1.ログメッセージ
アプリケーションからシステムロガーへ送られるメッセージは一つの
クラスオブジェクトとして扱われます。そのオブジェクトは次のような
情報を含みます。
- 発生日時
- 発生ノード
- 発生プロセス(プロセスクラス名、プロセス名、PID)
- 重大度
- 例外カテゴリー
- 例外クラス
- メッセージ識別子
- メッセージ文
1.2.システムロガーインターフェース
それぞれのアプリケーションはシステムロガーデーモンへのインターフェース
クラスをもって通信します。オブジェクトは生成されるときにデーモンとの
通信経路を確保し、シグナルを捕捉するよう準備します。また、この
オブジェクトへメッセージを送ります。
1.3.ログレコード
システムロガーはログを検索可能な状態で保存します。基本的には逐次
ファイルに記録していくことになるでしょう。ログレコードはログメッセージの
リストとなります。レコードへの追加、検索、集計などの機能が必要でしょう。
1.4.リアクション
受け取ったメッセージによってはリアクションを要求するものがあります。
リアクションの定義とリアクションリストの管理が必要です。
2.ロギングシステムの実装
2.1.ログメッセージクラス
おのおののログメッセージは、発生ノード、発生プロセス、クラス、
発生時刻、メッセージ識別、メッセージテキスト、重大度、反応要求
などの情報を含む必要があります。
場合によってはデータベースにエントリーを残し、それへのキーを
合わせて送ることにより、後で解析できるようにすることも考えられます。
メッセージテキストをプレーンなテキストにするのではなく、テキスト
オブジェクトとして、KONOEオブジェクトへのリンクを渡すなど、
再利用性の高い方法を考えることが好ましいかも知れません。
2.2.ログレコードクラス
一連のログメッセージの並びをログレコードとして実装します。
ログレコードの単位でファイルに書き出されたりします。また、
ログレコードを検索する機能が必要です。
2.3.ログリストクラス
ログメッセージタイプを登録します。タイプ毎に処理を登録する
仕組みが必要です。
2.4.ログマネージャクラス
サーバ用ソケットを開設し、ログメッセージを受け付け、
ログレコードを管理するものです。
2.5.ノーティファイアクラス
プロセス毎に登録し、メッセージを完成させてロガーに送信する
ものです。例えばテキストを与えるとメッセージオブジェクトを
生成し、それを書き込んで送信します。

[classes/syslog.html] Last Modified : 05-Mar-1998.
KONOEコラボレーション
konoe-req@konoe.kek.jp