豊田 孝

 本日は,イベント・ログを取り上げます。イベント・ログは,システム管理業務などを任されている方には常識的な機能の1つと思いますが,平均的なWindowsユーザーにはそれほど馴染みがないかもしれません。

図1●イベントビューアで見たイベント・ログの中身
 イベント・ログは単なるファイルですから,まずはその中身を見てみましょう。ログ・ファイルに記録されている内容を見るときには,「コントロールパネル>管理ツール>イベントビューア」という順にマウス操作して,イベントビューアを起動します。私のWindow XP環境では図1[拡大表示]のような情報が表示されます。

 図1を見ると分かるように,Windows XPシステムでは,記録されているイベントは「アプリケーション」「セキュリティ」「システム」の3種類に分類されています。ちなみに,Windows Server 2003システム環境では,次のような6種類のイベントが記録できます。

  • アプリケーション
  • セキュリティ
  • システム
  • ディレクトリ・サービス
  • ファイル・レプリケーション・サービス
  • DNSサーバー

 今回は,Windows XPとWindows Server 2003の両環境に共通している,アプリケーション・ログとシステム・ログを取り上げます。

 まずは,アプリケーション・ログとシステム・ログの機能上の意味を簡単に整理しておきましょう。Microsoftはこれら2種類のイベント・ログを次のように説明しています。

アプリケーション・ログとは?

 イベントビューアのヘルプでは,アプリケーション・ログを次のように説明しています。

“アプリケーション・ログには,アプリケーションまたはプログラムによって記録されたイベントが含まれます。例えば,データベース・プログラムでファイル・エラーが発生すると,そのイベントはアプリケーション・ログに記録されます。どのイベントが記録されるかは,アプリケーションの設計によります。”

図2●Windows XP環境でのエラー情報の記録動作
図3●Windows Server 2003環境でのエラー情報の記録動作
 この説明文から分かるように,アプリケーション・ログは,私たちが使用しているアプリケーションが書き込む情報を記録しています。記録されるのはエラー情報だけではなく,アプリケーションの設計者が必要と判断した情報が書き込まれます。例えば,こちらを一読し,必要なプログラムをダウンロードして実行してみてください。優に1000を越える情報が一挙に書き込まれます。

システム・ログとは?

 イベントビューアのヘルプでは,システム・ログを次のように説明しています。

“システム・ログには,Windows のシステム・コンポーネントによって記録されたイベントが含まれます。例えば,起動時にドライバなどのシステム・コンポーネントを読み込めなかった場合は,そのイベントがシステム・ログに記録されます。システム・コンポーネントによって記録されるイベントの種類は,Windows XPによってあらかじめ決定されています。”

 この説明文はかなり難しいのですが,基本的には,Windowsシステム側が記録してくる情報を保存しているのがこのシステム・ログと考えてよいでしょう。特に重要な情報は,第2文で説明しているWindows起動時に検出されるエラー情報です。このエラー情報の記録動作は,Windows XP環境では,私たちユーザーが操作できます(図2[拡大表示])。図2は,「コントロールパネル>システム>詳細設定>起動と回復>設定」という順にマウス操作すると表示されます。

 四角で囲んであるように「システム・ログにイベントを書き込む」のチェック・ボックスのチェックを外せるようになっています。ちなみに,Windows Server 2003環境のデフォルト設定では,図3[拡大表示]のように,チェック・ボックスにチェックが入り,変更できないようになっています。

 Windows XPとWindows Server 2003環境のデフォルト設定は異なりますが,特別な理由がない限り,チェックを外す必要はないでしょう。次に紹介する本日のサンプル・プログラムは,チェックが入っていることを前提としています。

図4●サンプル・プログラムの実行画面
図5●エラーが記録された
図6●エラー送信機能

本日のサンプル・プログラム

 本日のサンプル・プログラムは,現在有効となっているイベント・ログ(アプリケーション・ログ,セキュリティログ,システム・ログなど)に記録されているイベント(レコード)数を報告してきます。それでは,こちらからサンプル・プログラムをダウンロードし,まずは実行してみましょう。私のWindows XP環境では図4[拡大表示]のような結果が返されます。

 私のマシンのシステム・ログには1000を超えるイベントが書き込まれていました。実を言うと,Windows XPをインストール後,私はさまざまなドライバ,サービス・パック,ホットフィックスなどをこのマシンにインストールしてきました。すると,ある日のある時点から図5[拡大表示]のようなエラーが記録されていました。

 説明文を読んでみると,このままにしておけばシステムが不安定になる可能性がある,と指摘されています。これでは困りますから,システムに搭載されているBIOS(バイオス)がACPIという機能をサポートしているかどうかまず調べてみました。すると,私のBIOSはACPIをきちんとサポートしていることが分かりました。そこで私は,図6[拡大表示]のようなエラー送信機能を活用し,解決のヒントを探してみることにしました。返されたヒント情報によれば,システム・ベンダーに問い合わせる必要があるとのことでした。結論を申し上げれば,現在,決定的な解決策を見出せない状態にあります。BIOSとACPIについては今後の連載で取り上げる予定です。

 このような事態を避けるには,最新ドライバや何らかの修正コードを適応したマシンは(念のために)再起動し,イベントビューアを開き,マシンの最新状態をそのつど把握しておくとよいと思います。イベントビューアには,各イベント・ログを保存したり,消去する機能がありますから,それらの機能を有効活用するとよいと思います。

 さて皆さんのイベント・ログにはどれほどの数のイベントが記録されているでしょうか?ぜひ試してみてください。

サンプル・プログラムの解説と拡張のためのヒント

 本日のサンプル・プログラムのソース・コードは,リスト1のようになっています。今回はかなり複雑なプログラムになっています。機能を追加するとプログラムは複雑になることは避けられませんが,このソース・コードは“分かりにくく”なっています。ソース・コードを解読するときには,“自分ならこうする”,あるいは,“これがわかりにくい原因では?”と考えながら読み進めてください。そして,1行でも1語でも自分なりの修正を加えてみてください。

 ソース・コード内には,拡張コードも含めてありますから,ソース・コード内の指示に従って,コメントを外してみてください。イベント情報を書き込んだプログラム(イベント・ソース)に関するヒント情報が返されます。ヒント情報は現在5個返されるようになっていますが,変更することができます。ぜひ挑戦してみてください。

 拡張コードを有効にし,毎日実行していると,もしかすると,これまで見たこともないようなヒント情報が返されるかもしれません。そのようなときには,イベントビューアを起動し,詳しく調べる必要があるかもしれません。特に,システム環境を変更したり,サービスパックなどを適応した直後は注意して観察するとよいでしょう。

 本日は以上で終了です。ご苦労様でした。次回またお会いいたしましょう。ごきげんよう!