イベントログへメッセージ出力
CGIとか裏で動くプログラムは、画面やログファイルにエラーやワーニングの情報を出力できないケースがあったりします。
そんな時は、イベントログへ出力すればラクチンです。まぁ For Windowsですが・・・。
以下はそのサンプルです。
◆サンプルソース
use strict; OutEventlog('Test Perl', 'テストです!'); sub OutEventlog { my ($source_name, $log_data) = @_; system("eventcreate /T WARNING /ID 1 /L Application /SO \"$source_name\" /D \"$log_data\""); }
◆eventcreateコマンドヘルプ引用
EVENTCREATE [/S システム [/U ユーザー名 [/P [パスワード]]]] /ID イベントID [/L ログ名] [/SO ソース名] /T 種類 /D 説明 説明: このコマンド ライン ツールで管理者が指定のイベント ログに カスタム イベントを作成します。 パラメータ一覧: /S システム 接続先のリモート システムを指定します。 /U [ドメイン\]ユーザー コマンドが実行されるユーザー コンテキストを指定します。 /P パスワード 指定のユーザー コンテキストの パスワードを指定します。 /L ログ名 イベントを作成する先のイベント ログを指定します。 /T 種類 作成するイベントの種類を指定します。 有効な種類: ERROR、WARNING、INFORMATION /SO ソース イベントに使用するためのソースを指定しま す。ソースにはどの文字列を指定しても有効 であり、イベントを作成するアプリケーショ ンまたはコンポーネントを示すものです。 /ID ID イベントに対するイベント ID を指定しま す。1 から 1000 の範囲のどの数字も有効 です。 /D 説明 新しく作成するイベントに対して設定する説 明文を指定します。 /? ヘルプまたは使用法を表示します。 例: EVENTCREATE /T ERROR /ID 100 /L APPLICATION /D "アプリケーション ログにイベントを作成" EVENTCREATE /T ERROR /ID 999 /L APPLICATION /SO WinWord /D "アプリケーション ログの新しいソース Winword" EVENTCREATE /S system /T ERROR /ID 100 /L APPLICATION /D "ユーザー資格情報のないリモート システム" EVENTCREATE /S system /U user /P password /ID 100 /T ERROR /L APPLICATION /D "ユーザー資格情報付きのリモート コンピュータ" EVENTCREATE /S system /U domain\user /ID 100 /T WARNING /SO MyBatchFile.cmd /D "メインテナンス スクリプト ユーザー ログオン失敗"