下記スクリプトは、URIに"error1"を含むページを時間帯別に集計してグラフ化しています。
"error1"だけでなく、"error2","error3"など複数のページ別で、時間帯別に集計したいのですが、どのように記述すればいいか教えてください。
logparser "SELECT TO_STRING(time, 'HH') AS Hour, COUNT(*) AS Hits INTO MyChart.gif FROM ex*.log WHERE cs-uri-stem like '%%error1%%' GROUP BY Hour ORDER BY Hour ASC" -i:IISW3C -o:CHART -chartType:ColumnClustered -chartTitle:"Hourly Hits" -groupSize:600x400
一度の集計ではできなかったので、力技ですが error ごとに集計をしています。
下記は BAT ファイルとして実行することを想定しています。
@Echo Off Set ChartOption=-o:CHART -chartType:ColumnStacked -chartTitle:"Hourly Hits" -groupSize:600x400 -categories:ON -view:on Set ChartFile=myGraph.gif Set TempFile=stat.csv REM // error1 を集計 logparser "SELECT TO_STRING(time, 'HH') AS Hour, COUNT(*) AS Hits1, 0 As Hits2, 0 As Hits3 INTO %tempFile% FROM ex*.log WHERE cs-uri-stem like '%%error1%%' GROUP BY Hour ORDER BY Hour ASC" -i:IISW3C -stats:off -fileMode:1 REM // error2 を集計 logparser "SELECT TO_STRING(time, 'HH') AS Hour, 0 AS Hits1, COUNT(*) AS Hits2, 0 As Hits3 INTO %tempFile% FROM ex*.log WHERE cs-uri-stem like '%%error2%%' GROUP BY Hour ORDER BY Hour ASC" -i:IISW3C -stats:off -fileMode:0 REM // error3 を集計 logparser "SELECT TO_STRING(time, 'HH') AS Hour, 0 AS Hits1, 0 AS Hits2, COUNT(*) AS Hits3 INTO %tempFile% FROM ex*.log WHERE cs-uri-stem like '%%error3%%' GROUP BY Hour ORDER BY Hour ASC" -i:IISW3C -stats:off -fileMode:0 REM // グラフを作成 logparser "SELECT Hour, Sum(Hits1) AS error1, Sum(Hits2) AS error2, Sum(Hits3) AS error3 Into %ChartFile% FROM %tempFile% Group By Hour ORDER BY Hour ASC" -i:CSV %chartOption% -stats:off
logParser は以前から使っていましたが、まだまだ知らない機能がたくさんありましたので、今回は私も勉強になりました。
ありがとうございます。
ご返信が遅くなりましてすみません。
なるほど。こういった方法もあるのですね。
私はプログラミングがぜんぜんできないので、
勉強になります。
また、使っている方がいると思うと心強いです。
また別のエントリでご質問させて頂くこともあるかと思いますが、
どうぞ宜しくお願いいたします。