第1回 Log Parserの概要:無償ながら強力なログ解析ツールLog Parserを活用する(4/4 ページ)
ログは管理者の味方であり、悩みのタネでもある。無償ながら強力なツール、Log Parserでログを自在に操ろう。
LogParser.dllの動作チェック
WSHスクリプトからLog Parserを使うには、LogParser.dllが使用可能になっている必要がある。これには、regsvr32コマンドを実行して、LogParser.dllをレジストリに登録する必要があることはすでに述べた。LogParser.dllが正しく使える状態にあるかどうか、ここではコマンド・プロンプト上でWSHスクリプトを実行し、出力結果を確認しよう。
これにはまず、コマンドラインで以下のようにコマンドを実行し、WSHのスクリプト・ホストをCScriptに設定する。これにより、コマンド・プロンプトでWSHスクリプトの実行結果を確認できるようになる。
CScript //h:CScript
Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.
既定のスクリプト ホストが "cscript.exe" に設定されました。
次に、以下のVBScriptのスクリプトを、sample3.vbsとしてLogParser.exeと同じフォルダに保存する。
‘ sample3.vbs
Option Explicit
‘ オブジェクトの宣言
Dim objLogParser, objEventLogInputFormat, objNativeOutputFormat
‘変数の宣言
Dim strCommand
strCommand = "Select Top 1 * From Security"
‘ Log Parser COMオブジェクトの生成
Set objLogParser = CreateObject("MSUtil.LogQuery")
‘ 入力形式オブジェクトの生成とWindowsイベント・ログ入力形式の指定
Set objEventLogInputFormat = CreateObject("MSUtil.LogQuery.EventLogInputFormat")
‘ 出力形式オブジェクトの生成とNAT出力形式の指定
Set objNativeOutputFormat = CreateObject("MSUtil.LogQuery.NativeOutputFormat")
‘ Log Parserの実行
Call objLogParser.ExecuteBatch(strCommand, objEventLogInputFormat, objNativeOutputFormat)
‘オブジェクトの破棄
Set objNativeOutputFormat = Nothing
Set objEventLogInputFormat = Nothing
Set objLogParser = Nothing
LogParser.dllを使用する場合は、LogParserのCOMオブジェクトのほかに、入出力形式オブジェクトを使用する必要がある。これらのオブジェクトに関する情報は、Log Parserのヘルプの[Log Parser]−[リファレンス]−[COM API]−[LogQuery オブジェクト]および[入力形式オブジェクト]と[出力形式オブジェクト]を参照してほしい。
上記のsample3.vbsを実行すると、結果は以下のようになる。
Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.
COUNT(ALL *)
------------
46629
はじめの一歩
今回は、Log Parserの概要と、入手方法、インストールと動作確認までを行った。まだほんの入り口にすぎないが、Log Parserの可能性を感じていただけたのではないかと思う。
次回は、DLL版のLog Parserによる、より本格的な解析、応用方法の例について、サンプル・スクリプトと出力を見ながら紹介する予定だ。
【コラム】開発者が語るLog Parser誕生秘話 ―― Gabriele Giuseppini
1999年、私はIISのテスト工程でソフトウェア・デザイン技術者としての仕事を始め、そこでWebサーバが生成するログ・ファイルをテストしていました。IISがファイルとして生成したログの値を検証するためには、ログから指定したフィールドを抜き出すツールが必要であることが、私にはすぐに分かりました。単に抽出するだけでなく、一定の条件を満たす特定のエントリから特定のフィールドを取り出して、ログを再構成する必要があったのです。そして、この作業はコマンドラインあるいはシェル・スクリプトで行う必要がありました(これらの作業をコマンドライン・スイッチで行うのであれば、それは悪夢のような作業だったでしょう)。
このような理由から、SQLに近い言語でこれらの処理を行うべきであることに気付き、Log Parser 1.0の開発に着手しました。Log ParserのSQLコアは非常に素晴らしいもので、ログ・ファイル以外にも使えるように、より一般化した構造へとアーキテクチャを完全に作り替える必要があることを悟りました。このため、Log Parserを一般的な入出力形式をサポートするツールへと再構成したのです。
まずは、非IISログ形式として、イベント・ログ形式を入力形式として受け付け可能なツールとして正しく動作するようにLog Parserを書き換えました。そして、より汎用的な入力が可能になるように拡張を繰り返した結果が、現在のLog Parserです。
Microsoft Corporation
Gabriele Giuseppini*
*その後Gabriele Giuseppini氏は、米Microsoft社を退社しています。
「連載目次」
Copyright© Digital Advantage Corp. All Rights Reserved.