しばたテックブログスマートフォン用の表示で見るしばたテックブログPowerShellを中心に気分で書いている技術ブログです。メソッドを使ってイベントログを出力する方法を紹介します。仕事でとあるイベントログの監視ツールに対してイベントログを出力する必要があって、「簡単だろう」と高を括っていたら意外とはまってしまったのが今回の内容です。作業環境はこんな感じです。v7.1メッセージリソースDLLを作る最初にイベントログに出力するメッセージを格納するメッセージリソースDLLを作成します。メッセージリソースDLLは以下の手順で作成することができます。メッセージを記述したメッセージスクリプトを作成し、メッセージコンパイラ(mc.exe)でコンパイルしリソーススクリプトを作成する。作成したリソーススクリプトを、リソースコンパイラ(rc.exe)でコンパイルしリソースファイルを作成する。リソースファイルをリンカ(link.exe)でリンクし、リソースDLLにする。メッセージテキストファイルは以下の様な形式で記述します。MessageId(これがイベントIDになります)を指定し、Severity(Success、Informational、Warning、Errorから選択します)を選び、言語毎のメッセージを記述します。いう名前でファイルを作成しておきます。%1.Language=Japaneseメッセージは「%1」です。%1.Language=Japanese警告メッセージは「%1」です。%1.Language=Japaneseエラーメッセージは「%1」です。http://msdn.microsoft.com/en-us/library/dd996906%28VS.85%29.aspxメッセージテキストファイルを作成したら、メッセージコンパイラでコンパイルします。MyAppMessage.mcコンパイルに成功すると以下のヘッダファイルとリソーススクリプトファイルが作成されます。MSG0409.binMSG0411.binMyAppMessage.hMyAppMessage.rcリソーススクリプトが出来たら、リソースコンパイラでコンパイルします。MyAppMessage.rcコンパイルに成功すると、以下のリソースファイルが作成されます。MyAppMessage.res最後に、リソースをリンカでリンクします。オプションを指定します。イベントソースの作成メッセージDLLを作成したらイベントソースを作成し、イベントログのメッセージにこのDLLを使用する登録をする必要があります。メソッドを使って以下の様に記述するとイベントソースの作成ができます。ソース名の新しいキーが作成されます。レジストリのキーが作成されていればイベントソースの作成は完了です。メソッドを使用して以下の様に記述することでメッセージDLLからメッセージを出力することが出来ます。"エラー");WriteEventメソッドの第一引数にはイベントソース名を指定します。記述されているMessageIdを指定する必要あります。第二引数のCategoryIdも同様にMyAppMessage.hのMessageIdを指定します。第三引数にはEventLogEntryTypeを指定します。メッセージDLLのSeverityと違う区分にした場合はこの引数の値が優先される様です。*2WriteEventの最後の引数にはメッセージパラメータを指定します。イベントビューアで確認するとこんな感じで出力されます。今回参考にしたサイトhttp://www.monyo.com/technical/products/evt_messages/http://d.hatena.ne.jp/kurip/20070117http://msdn.microsoft.com/ja-jp/library/650k61tw(VS.80).aspxhttp://msdn.microsoft.com/en-us/library/aa385646(VS.85).aspxhttp://www.eventlogblog.com/blog/2008/04/event-log-message-files-the-de.htmlhttp://re-thinkthings.spaces.live.com/blog/cns!1C5AE98DA3645F42!511.entry*1:イベントソースを作成するには管理者権限が必要です*2:じゃあSeverityっていらなくね?って思うでんすがどうなんでしょう。基本的にはこちらの記事の内容をかいつまんだ感じです。Clus...本シリーズの概要と一覧はこちらからどうぞ。広告スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。