### 8 NTEventLogHandler

`NTEventLogHandler` クラスは、`logging.handlers` モ ジュールの中にありますが、ログ記録メッセージをローカルな Windows NT、Windows 2000 、または Windows XP のイベントログ (event log) に送信する機能をサポートします。この機能を使えるようにするには、 Mark Hammond による Python 用 Win32 拡張パッケージをインストール する必要があります。

クラス `NTEventLogHandler`( | appname[, dllname[, logtype]])

  `NTEventLogHandler` クラスの新たなインスタンスを返します。 appname はイベントログに表示する際のアプリケーション名を定義する ために使われます。この名前を使って適切なレジストリエントリが生成されます。 dllname はログに保存するメッセージ定義の入った .dll または .exe ファイルへの完全に限定的な (fully qualified) パス名を与えなければ なりません (指定されない場合、`'win32service.pyd'` が 使われます - このライブラリは Win32 拡張とともにインストールされ、 いくつかのプレースホルダとなるメッセージ定義を含んでいます)。 これらのプレースホルダを利用すると、メッセージの発信源全体がログに 記録されるため、イベントログは巨大になるので注意してください。 logtype は `'Application'`、 `'System'` または `'Security'` のいずれかであるか、デフォルトの `'Application'` でなければなりません。

`close`( | )

  現時点では、イベントログエントリの発信源としての アプリケーション名をレジストリから除去することができます。 しかしこれを行うと、イベントログビューアで意図したログをみることが できなくなるでしょう - これはイベントログが .dll 名を取得するために レジストリにアクセスできなければならないからです。現在のバージョン ではこの操作を行いません (実際、このメソッドは何も行いません)。

`emit`( | record)

  メッセージ ID、イベントカテゴリおよびイベント型を決定し、 メッセージを NT イベントログに記録します。

`getEventCategory`( | record)

  レコードに対するイベントカテゴリを返します。自作のカテゴリを 指定したい場合、このメソッドをオーバライドしてください。 このクラスのバージョンのメソッドは 0 を返します。

`getEventType`( | record)

  レコードのイベント型を返します。自作の型を指定したい場合、 このメソッドをオーバライドしてください。 このクラスのバージョンのメソッドは、ハンドラの typemap 属性を 使って対応付けを行います。この属性は `__init__()` で初期化 され、`DEBUG`、`INFO`、 `WARNING`、 `ERROR`、および `CRITICAL` が入っています。 自作のレベルを使っているのなら、このメソッドをオーバライドするか、 ハンドラの typemap 属性に適切な辞書を配置する必要があるでしょう。

`getMessageID`( | record)

  レコードのメッセージ ID を返します。自作のメッセージを使っているの なら、ロガーに渡されるmsg を書式化文字列ではなく ID に します。その上で、辞書参照を行ってメッセージ ID を得ます。 このクラスのバージョンでは 1 を返します。この値は win32service.pyd における基本となるメッセージ ID です。