2011/10/22

Windows 7でのイベントビューアのカスタマイズ

Windowsでは、イベントビューアがヘルスチェックの基本になる。各種のコンポーネントの動作状況がここに記録されており、エラーや警告して記録されるイベントを確認することで、変なことが起きていないかを知ることができる。

しかし、イベントログはすべてのプログラムに開放されているので、どのイベントを警告やエラーとするかは、そのコンポーネントの考え方次第になる。本来であれば、ユーザの認知レベルで警告やエラーのレベルを設定するべきだが、そのコンポーネントの開発者が、そのコンポーネントにとってよくない状況を警告やエラーとしてしまう場合がよくある。ユーザにとっては、大きな影響がない場合でもだ。

Windows XPまではそういう状況だったが、Windows Vistaあたりから、イベントビューアでビューをカスタマイズできるようになった。特定のイベントだけを表示するビューや、特にチェックしなくて良いイベントを表示しないようにすることができる。これによって、Windows 7は管理イベントというビューを作っている。ここには、システム管理上、重要とされるイベントが表示されるようになっている。

しかし、アプリケーションの考え方によっては、開発者にとってよくない状況を警告やエラーで表示するような場合があり、そうなるとこの管理ビューにもごみが表示される。こうなってしまうと、イベントビューアにはごみばかり表示されているように見えてしまい、状況を簡単に確認できなくなってしまう。

上に書いたようにWindows 7では、不要なイベントを表示しないフィルタを作れるのだが、GUIからではうまく設定できない。GUIからだとイベントIDを指定して表示しないイベントを設定する。しかし、イベントは、イベント発生もとを示すイベントソースと、そのソースの中でイベントを識別するためのイベントIDを持っている。GUIで設定できるのはイベントIDだけなので、そのイベントIDになっているイベントは、どんなイベントソースからのイベントも非表示になってしまう。

GUIからじゃなく、イベントフィルタをきちんと作成すれば、特定のイベントを狙い撃ちで非表示にできる。以下、その方法。

(1) 管理イベントビューをコピーする。
イベントビューアのカスタムビューの下にある管理イベントを右クリック、カスタムビューのコピーを選択してコピーを作成。適当な名前を付けておく。たとえば、My管理イベント。

(2) 非表示にするイベントの詳細情報を取得する。
My管理イベントビューで、非表示にしたいイベントを捜してみる。見つかったら、詳細タブに切り替えて、詳細情報を表示する。+Systemと表示されているところをクリックして全情報を表示させる。必要なのは、Providerの下の[Name]の内容、EventID、Channelである。

(3) イベントフィルタを作成する。
(2)の内容に従って、以下のXML Elementを作成する。ノートパッド等で作っておくのがよいと思う。

<Suppress Path="Channel"> * [System[Provider[@Name="Name"]] and System[(EventID=EventID)]] </Suppress>

イタリックにしたところを、(2)で取得した内容に置き換える。

(4) イベントフィルタを登録する。
My管理イベントを右クリックして、プロパティを選択、「フィルタの編集」のボタンをクリック。カスタムビューのプロパティのダイアログで、XMLタブを選択。何かXMLが表示されるが、これがフィルタの実体だ。これの最後のほうのの直前に、(3)で作った内容をコピーする。

これでOK。フィルタの内容は、実はいろいろ高度なことができる。詳しいことは、MSDNのEvent Selection(英語)に記載されている。

いくつかのイベントを非表示にするだけで、ずいぶんすっきりするのではないだろうか。

0 件のコメント :

コメントを投稿