Windowsのイベントログの管理についてまとめました。
- evtファイル形式で保存するなら、MS TechNetのScriptをタスクスケジューラで使えば簡単です。VBScriptなので、「ログファイルサイズが100KBを超えたらバックアップ」などの条件処理も簡単です。もちろんカスタムイベントログにも対応しています。
- CSV形式で出力したければ、WindowsXP標準の eventquery.vbs が便利かもしれません。%WINDIR%system32 にあります。
使用例
>cscript eventquery.vbs /FO CSV /v
このスクリプトの利用法は、コマンドラインヘルプ(/?)を参照するか、スクリプトファイルの中身を覗いてみてください。@ITでも少し紹介されていました。
- その他、出力形式をカスタマイズしたり、直接DBへ入力したりしたい場合は、自分でWSHを書いた方が早いでしょうね。
独自出力形式例
Dim objWMI, colEvents
Dim strBody
Set objWMI = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\.\root\cimv2")
Set colEvents = objWMI.ExecQuery("Select * From Win32_NTLogEvent Where Logfile='System'")
For Each objEvent In colEvents
strBody = "File:" & objEvent.LogFile & " / Type:" & objEvent.Type _
& " / Category:" & objEvent.Category & vbNewLine _
& "Time: " & objEvent.TimeWritten & vbNewLine _
& "Message: " & objEvent.Message & vbNewLine
Wscript.Echo strBody
Next
Set colEvents = Nothing
Set objWMI = Nothing
- もちろんWindowsのイベントビューアの「ログ ファイルを開く(O)」で観ることができますが、詳細にフィルタしたければ、前述の eventquery.vbs を使うなり、DumpEventLogなどのフリーソフトウェアを使うなりするとよいかもしれません。
カスタムイベントログの削除 †
イベントログのデータファイルは %WINDIR%\system32\config にあり、Windowsサービス[Event Log]のプロセスに常にロックされています。Windowsサービス[Event Log]は net use stop できないので、カスタムイベントログのデータファイルを削除したいときには、次の手順が必要と思われます。
- レジストリエディタで[HKLM\SYSTEM\CurrentControlSet\Services\Eventlog]にあるカスタムイベントログのキーを削除する。
- Windowsを再起動する。
- %WINDIR%\system32\configにあるカスタムイベントログのデータファイルを削除する。
イベントトリガー †
前述の@ITの記事にもありますが、特定のイベントが発生した場合に指定されたコマンドを実行する仕組みがWindowsXPから標準装備されています。その設定をするのが、eventtriggers.exe です。%WINDIR%system32 にあります。
使い方は如何様にも考えられると思いますが、とにかく有用だと思います。