### 10 MemoryHandler

`MemoryHandler` は、`logging.handlers` モ ジュールの中にありますが、ログ記録するレコードをメモリ上にバッファし、 定期的にその内容をターゲット (target) となるハンドラに フラッシュする機能をサポートしています。 フラッシュ処理はバッファが一杯になるか、ある深刻さかそれ以上のレベル をもったイベントが観測された際に行われます。

`MemoryHandler` はより一般的な抽象クラス、 `BufferingHandler` のサブクラスです。この抽象クラスでは、 ログ記録するレコードをメモリ上にバッファします。各レコードがバッファに 追加される毎に、`shouldFlush()` を呼び出してバッファをフラッシュ すべきかどうか調べます。フラッシュする必要がある場合、`flush()` が必要にして十分な処理を行うものと想定しています。

クラス `BufferingHandler`( | capacity)

  指定し許容量のバッファでハンドラを初期化します。

`emit`( | record)

  レコードをバッファに追加します。 `shouldFlush()` が真を 返す場合、バッファを処理するために `flush()` を呼び出します。

`flush`( | )

  このメソッドをオーバライドして、自作のフラッシュ動作を実装することが できます。このクラスのバージョンのメソッドでは、単にバッファの内容を 削除して空にします。

`shouldFlush`( | record)

  バッファが許容量に達している場合に真を返します。このメソッドは 自作のフラッシュ処理方針を実装するためにオーバライドすることが できます。

クラス `MemoryHandler`( | capacity[, flushLevel [, target]])

  `MemoryHandler` クラスの新たなインスタンスを返します。 インスタンスはサイズ capacity のバッファとともに初期化されます。 flushLevel が指定されていない場合、`ERROR` が使われます。 target が指定されていない場合、ハンドラが何らかの有意義な 処理を行う前に `setTarget()` でターゲットを指定する必要があります。

`close`( | )

  `flush()` を呼び出し、ターゲットを `None` に 設定してバッファを消去します。

`flush`( | )

  `MemoryHandler` の場合、フラッシュ処理は単に、バッファされた レコードをターゲットがあれば送信することを意味します。 違った動作を行いたい場合、オーバライドしてください。

`setTarget`( | target)

  ターゲットハンドラをこのハンドラに設定します。

`shouldFlush`( | record)

  バッファが満杯になっているか、 flushLevel またはそれ以上の レコードでないかを調べます。