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のほうがよいかもしれませんが。
間違い、指摘点などがあればご連絡ください。
さんのコメント: さんのコメント: