14.5.5.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__() で初期化 され、DEBUGINFOWARNINGERROR、および CRITICAL が入っています。 自作のレベルを使っているのなら、このメソッドをオーバライドするか、 ハンドラの typemap 属性に適切な辞書を配置する必要があるでしょう。

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

ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。