srfi.215
- 中央ログ交換局 ¶このモジュールはログ機構を抽象化して、具体的にどういうログシステムが使われているかに かかわらず統一的な方法でログメッセージを送り出す方法を提供します。
Gaucheでは、デフォルトのログシステムはgauche.logger
を使うように設定してあります
(see gauche.logger
- ユーザレベルのロギング)。
Gauche特定のコードを書いているならgauche.logger
を直接使っても良いでしょう。
このモジュールはポータブルなコードを書く場合に便利です。
[SRFI-215]{srfi.215
}
このパラメータの値は引数を一つ取る手続きでなければなりません。
引数はログメッセージオブジェクトです。
ログメッセージオブジェクトは連想リストで、キーは常にシンボルです。
値は、文字列、正確な整数、バイトベクタ(u8vector)、<error>
のインスタンス、
のいずれかです。SRFIではそれ以外の値が渡された場合の動作は規定されていません。
Gaucheではそれ以外の値はコールバックに渡す前に文字列に変換しますが、
ポータブルなプログラムでは上に列挙された値に留めておくべきです。
キーSEVERITY
とMESSAGE
は常に存在し、
それぞれ正確な整数と文字列を値に持ちます。
SEVERITY
の値は0から7まで(両端含む)です。
その意味を示す定数が定義されているので下のエントリを参照してください。
ユーザはその他のキーを自由に使えます。
ただ、SRFI-215はいくつかの共通するキーを提示しているので見ておくと良いでしょう。
SRFI-25はまた、デフォルトのコールバックはログメッセージをバッファし、
このコールバックの値が変えられた時に貯められたメッセージを新たなコールバックに渡すことを
提案mしています。
しかし我々の実装では、デフォルトのコールバックは直接log-format
に
ログを流します (gauche.logger
- ユーザレベルのロギング参照)。
[SRFI-215]{srfi.215
}
このパラメータは(key1 value1 key2 value2 …)
の形のキー-値リストで、
その内容がsend-log
が呼ばれた時にそのフィールドリストに自動的に付け加えられます。
つまり、send-log
は
(apply send-log severity message [key value] ... (current-log-fields))
と呼ばれたかのように振る舞うということです。
このパラメータをセット/再束縛した時点で、渡された値がsend-log
の引数として
ふさわしいかどうかが検査されます。
[SRFI-215]{srfi.215
}
ログメッセージパケットを作って現在のログコールバックに送信します。
severity引数は0から7までの正確な整数でなければなりません。
これはログメッセージパケットのSEVERITY
キーに対する値となります。
各値を意味する次の定数が定義されています:
EMERGENCY
、ALERT
、CRITICAL
、ERROR
、
WARNING
、NOTICE
、INFO
、DEBUG
。
message引数は文字列で、ログメッセージパケットの
MESSAGE
キーに対する値となります。
残りの引数はキー-値リストです。これにSEVERITY
とMESSAGE
が
前置され、current-log-fields
の値が後置され、全体がalistに変換されて
ログメッセージパケットとなります。有効なキーと値については
上のcurrent-log-callback
を参照してください。
この手続きは意味のある値は返しません。
(send-log INFO (string-append "User " username " logged in") 'USERNAME username 'REMOTE_IP remote-ip)