## 5 Handler オブジェクト

ハンドラは以下の属性とメソッドを持ちます。`Handler` は直接インスタンス化されることはありません; このクラスは より便利なサブクラスの基底クラスとして働きます。しかしながら、 サブクラスにおける `__init__()` メソッドでは、 `Handler.__init__()` を呼び出す必要があります。

`__init__`( | level=`NOTSET`)

  レベルを設定して、`Handler` インスタンスを初期化します。 空のリストを使ってフィルタを設定し、I/O 機構へのアクセスを 直列化するために (`createLock()` を使って) ロックを生成します。

`createLock`( | )

  スレッド安全でない根底の I/O 機能に対するアクセスを直列化 するために用いられるスレッドロック (thread lock) を初期化します。

`acquire`( | )

  `createLock()` で生成されたスレッドロックを獲得します。

`release`( | )

  `acquire()` で獲得したスレッドロックを解放します。

`setLevel`( | lvl)

  このハンドラに対する閾値を lvl に設定します。 ログ記録しようとするメッセージで、lvl よりも深刻でないものは 無視されます。ハンドラが生成された際、レベルは `NOTSET` (全てのメッセージが処理される) に設定されます。

`setFormatter`( | form)

  このハンドラのフォーマッタを form に設定します。

`addFilter`( | filt)

  指定されたフィルタ filt をこのハンドラに追加します。

`removeFilter`( | filt)

  指定されたフィルタ filt をこのハンドラから除去します。

`filter`( | record)

  このハンドラのフィルタをレコードに適用し、レコードが フィルタを透過して処理されることになる場合には真を返します。

`flush`( | )

  全てのログ出力がフラッシュされるようにします。このクラスの バージョンではなにも行わず、サブクラスで実装するためのものです。

`close`( | )

  ハンドラで使われている全てのリソースを始末します。このクラスの バージョンではなにも行わず、サブクラスで実装するためのものです。

`handle`( | record)

  ハンドラに追加されたフィルタの条件に応じて、指定されたログレコードを 発信します。このメソッドは I/O スレッドロックの獲得/開放を伴う実際の ログ発信をラップします。

`handleError`( | record)

  このメソッドは `emit()` の呼び出し中に例外に遭遇した際に ハンドラから呼び出されます。デフォルトではこのメソッドは 何も行いません。すなわち、例外は暗黙のまま無視されます。 ほとんどのログ記録システムでは、これがほぼ望ましい機能です - というのは、ほとんどのユーザはログ記録システム自体のエラーは 気にせず、むしろアプリケーションのエラーに興味があるからです。 しかしながら、望むならこのメソッドを自作のハンドラと置き換え ることはできます。record には、例外発生時に処理 されていたレコードが入ります。

`format`( | record)

  レコードに対する書式化を行います - フォーマッタ が設定されていれば、それを使います。そうでない場合、 モジュールにデフォルト指定されたフォーマッタを使います。

`emit`( | record)

  指定されたログ記録レコードを実際にログ記録する際の全ての処理 を行います。このメソッドのこのクラスのバージョンはサブクラスで 実装するためのものなので、`NotImplementedError` を送出します。