For Development HEAD DRAFTSearch (procedure/syntax/module):

11.52 srfi.215 - 中央ログ交換局

Module: srfi.215

このモジュールはログ機構を抽象化して、具体的にどういうログシステムが使われているかに かかわらず統一的な方法でログメッセージを送り出す方法を提供します。

Gaucheでは、デフォルトのログシステムはgauche.loggerを使うように設定してあります (see gauche.logger - ユーザレベルのロギング)。 Gauche特定のコードを書いているならgauche.loggerを直接使っても良いでしょう。 このモジュールはポータブルなコードを書く場合に便利です。

Parameter: current-log-callback

[SRFI-215]{srfi.215} このパラメータの値は引数を一つ取る手続きでなければなりません。 引数はログメッセージオブジェクトです。

ログメッセージオブジェクトは連想リストで、キーは常にシンボルです。 値は、文字列、正確な整数、バイトベクタ(u8vector)、<error>のインスタンス、 のいずれかです。SRFIではそれ以外の値が渡された場合の動作は規定されていません。 Gaucheではそれ以外の値はコールバックに渡す前に文字列に変換しますが、 ポータブルなプログラムでは上に列挙された値に留めておくべきです。

キーSEVERITYMESSAGEは常に存在し、 それぞれ正確な整数と文字列を値に持ちます。 SEVERITYの値は0から7まで(両端含む)です。 その意味を示す定数が定義されているので下のエントリを参照してください。 ユーザはその他のキーを自由に使えます。 ただ、SRFI-215はいくつかの共通するキーを提示しているので見ておくと良いでしょう。

SRFI-25はまた、デフォルトのコールバックはログメッセージをバッファし、 このコールバックの値が変えられた時に貯められたメッセージを新たなコールバックに渡すことを 提案mしています。 しかし我々の実装では、デフォルトのコールバックは直接log-formatに ログを流します (gauche.logger - ユーザレベルのロギング参照)。

Parameter: current-log-fields

[SRFI-215]{srfi.215} このパラメータは(key1 value1 key2 value2 …)の形のキー-値リストで、 その内容がsend-logが呼ばれた時にそのフィールドリストに自動的に付け加えられます。 つまり、send-log(apply send-log severity message [key value] ... (current-log-fields)) と呼ばれたかのように振る舞うということです。

このパラメータをセット/再束縛した時点で、渡された値がsend-logの引数として ふさわしいかどうかが検査されます。

Function: send-log severity message …

[SRFI-215]{srfi.215} ログメッセージパケットを作って現在のログコールバックに送信します。

severity引数は0から7までの正確な整数でなければなりません。 これはログメッセージパケットのSEVERITYキーに対する値となります。 各値を意味する次の定数が定義されています: EMERGENCYALERTCRITICALERRORWARNINGNOTICEINFODEBUGmessage引数は文字列で、ログメッセージパケットの MESSAGEキーに対する値となります。

残りの引数はキー-値リストです。これにSEVERITYMESSAGEが 前置され、current-log-fieldsの値が後置され、全体がalistに変換されて ログメッセージパケットとなります。有効なキーと値については 上のcurrent-log-callbackを参照してください。

この手続きは意味のある値は返しません。

(send-log INFO (string-append "User " username " logged in")
          'USERNAME username 'REMOTE_IP remote-ip)
Constant: EMERGENCY
Constant: ALERT
Constant: CRITICAL
Constant: ERROR
Constant: WARNING
Constant: NOTICE
Constant: INFO
Constant: DEBUG

[SRFI-215]{srfi.215} それぞれ正確な整数0から7に束縛され、ログされる事象の深刻度を示します。



For Development HEAD DRAFTSearch (procedure/syntax/module):
DRAFT