LogParser は テキストベース(CSV,XMLなど)やIISログ、イベントログ、Windows上のデータソースをデータベースのように扱いSQLライクなクエリを使用して、テキストベース、SQL,SYSLOG,チャート(図)などさまざまな対象に結果を保存することができます。今回はIISログに対してページビュー情報の取得などをするサンプルを掲載します。

記事記載時点で最新のLogParser 2.2 を使用してみます。次のリンクからLogParser をダウンロードすることができます。

- Log Parser 2.2 日本語版
http://www.microsoft.com/downloads/details.aspx?FamilyID=890cd06b-abf8-4c25-91b2-f8d975cf8c07&DisplayLang=ja
- Log Parser 2.2 日本語版(スクリプトセンター)
http://www.microsoft.com/japan/technet/scriptcenter/tools/logparser/default.mspx

そのほかの情報ソースとして、アットマークITで、LogParserが紹介されていましたので、リンクを載せて起きます。

第1回 Log Parserの概要
http://www.atmarkit.co.jp/fwin2k/operation/logparser1/logparser1_01.html
第2回 多彩なLog Parserの出力機能 
http://www.atmarkit.co.jp/fwin2k/operation/logparser2/logparser2_01.html

 1. LogParser のインストール

インストールは簡単に行えます。ページ冒頭で紹介したリンクからインストールファイルLogParser.msi をインストールします。

2. LogParser の起動

dll を使用して、WSH,VBScript から使用することもできるようですが、本気時ではコマンドラインから使用します。スクリプトから使用する方法などは、記事の頭で紹介したリンクや、ヘルプを参照してください。

スタート→すべてのプログラム→Log Parser 2.2→Log Parser 2.2を選択するとコマンドラインが起動しますので、ここからLogParser を使用します。

細かい構文などはSDKを参照してください。次のサンプルは、E:\tmp\countフォルダにおいたIISログから拡張子がaspxのページアクセス数をカウントするコマンドです。cs-uri-stem はIISログのフィールドで使用できる列名です(使用可能な列はヘルプを参照)。INTO で出力先(例では標準出力), -i: で入力形式。 -o: で出力形式を指定しています。 SELECT は抽出に使用するクエリです。グループ化や様々な関数、ソートなど様々なことをおこなうことができます。使用可能な入力、出力形式は いっしょにインストールされるヘルプを確認してください。

サンプルコードのコマンドには改行がありますが、実際には改行はありませんので注意してください。

C:\Program Files (x86)\Log Parser 2.2>LogParser "SELECT COUNT(cs-uri-stem) INTO
 STDOUT  FROM E:\tmp\count\*.log WHERE EXTRACT_EXTENSION(cs-uri-stem) = 'aspx'" 
-i:IISW3C -o:NAT
COUNT(ALL cs-uri-stem)
----------------------
7215

統計情報:
---------
処理された要素: 79225
出力された要素: 1
実行時間:       1.25 秒

 次に、 LIKE 演算子を使用して .svc ファイルへのアクセス件数を確認するサンプルです。

C:\Program Files (x86)\Log Parser 2.2>LogParser "SELECT COUNT(cs-uri-stem) INTO
STDOUT  FROM E:\tmp\count\*.log WHERE cs-uri-stem LIKE '%.svc%'" -i:IISW3C
警告: 出力フォーマットが指定されていません。NAT 出力フォーマットを使用します。
COUNT(ALL cs-uri-stem)
----------------------
3691

統計情報:
---------
処理された要素: 79225
出力された要素: 1
実行時間:       1.22 秒

最後に、日付ごとのアクセス数をグラフ(chart)を使用して出力するサンプルです。CHARTを出力形式に指定する場合、サポートされるバージョンのMicrosoft Office がインストールされている必要があります。ボットの検索を除外したいので、bot.htm という文字列を含むユーザエージェントを除外しています。もちろんクローラからのアクセスを完璧に除外できるわけではないですが。

C:\Program Files\Log Parser 2.2>LogParser "SELECT date , COUNT(*) INTO E:\tmp\count\test.jpg
 FROM E:\tmp\count\*.log WHERE EXTRACT_EXTENSION(cs-uri-stem) =
 'aspx' AND cs(User-Agent) NOT LIKE '%bot.htm%' GROUP BY date" -i:IISW3C -o:CHAR
T -chartType:Column3D -groupSize:400x260

統計情報:
---------
処理された要素: 79225
出力された要素: 7
実行時間:       1.53 秒

INTOで指定されたファイル test.jpg は次のようになります。なにげに1週間の平均ページビューは1000PV/日以上でびっくりデス。

3. まとめ

LogParser は様々なデータソースに対して汎用的なクエリを使用してデータの統計、抽出をするのに便利です。データにさえおこせればExcelのほうがよいかもしれませんが。

間違い、指摘点などがあればご連絡ください。