イベントログにメッセージを出力する


 Win32::EventLogモジュールを使います。
use strict;
use warnings;
use Win32::EventLog;

my $source = 'myApplication'; # ソース
my $elog = Win32::EventLog->new($source);

my $event = {
    EventType => EVENTLOG_INFORMATION_TYPE, # 種類
    EventID => 1, # イベントID
    Strings => '説明', # 説明
    Data => 'DATA', # データ
};

$elog->Report($event) or die "Reportに失敗しました。";
 EventTypeには以下を設定します。
設定値 イベントログの値
EVENTLOG_ERROR_TYPE エラー
EVENTLOG_WARNING_TYPE 警告
EVENTLOG_INFORMATION_TYPE 情報
EVENTLOG_AUDIT_SUCCESS 成功の監査
EVENTLOG_AUDIT_FAILURE 失敗の監査
 イベントビューアでイベントログを見ると説明欄に以下のメッセージが表示される場合があります。
イベント ID (xxxx) (ソース xxxx 内) に関する説明が見つかりませんでした。リモート コンピュータからメッセージを表示するために必要なレジストリ情報またはメッセージ DLL ファイルがローカル コンピュータにない可能性があります。この説明を取得するために /AUXSOURCE= フラグを使用することができる可能性があります。詳細については、ヘルプとサポートを参照してください。次の情報はイベントの一部です:
 イベントビューアがイベントログの説明欄を表示する際には、ソースに対応するメッセージDLLの中からイベントIDに対応する文字列を取得します。ソースに対応するメッセージDLLが見つからなかったり、イベントIDに対応する文字列を取得できない場合に上記のメッセージが表示されます。
 上記メッセージを出さないようにするのであれば、DLLを作成してシステムに登録して下さい。

関連項目

syslogにメッセージを出力する
Windowsの通知領域にメッセージを表示する