Apacheのログ解析処理をできるだけ自動化(WebLog Expert Liteをスクリプト制御)

̃Gg[͂ĂȃubN}[Nɒlj

無料のApacheログ解析ツールとしてWebLog Expert Liteを使用しています。
解析結果をHTML形式で出力してくれる優れものです。

(サンプルlog解析結果。当サイトの解析結果ではないです。。。)

しかし、コマンドライン引数が準備されていないため、定型処理化に難有りといったところです。

また、不要なログ(自分自身のアクセスなど)を解析対象から外すFilter機能がないため(有料版にはある)、
あらかじめログを整形してから渡す必要もあります。

そこで秀丸マクロによるログ整形と、WSH(VBA)スクリプトによる
WebLog Expert Liteの制御を行い、ログ解析処理をできるだけ自動化させてみました。


秀丸マクロによるログ整形

Apacheのログを開き、別名で保存した後、整形処理を行います。

整形処理後、さらにWebLog Expert Liteにログを渡すスクリプト(Analyze.vbs)を呼び出します。

この秀丸マクロを秀丸エディタのショートカットに登録して使います。

macro_server_log_edit.mac

//Apacheのログを整形し、WebLog Expert Lite制御用の
//WSH(VBScript)スクリプトを実行する秀丸マクロ

//処理が長い時のエラー抑制
seterrormode 1 0;

//ApacheのログをOpen
openfile "C:hoge\access.log";

//とりあえずbackupフォルダに別名で保存
saveas "backup\access_bak.log";

//ログ整形開始
//古い日付のログを削除するサンプル
gofiletop;//先頭にカーソル移動
beginsel;//範囲選択開始
searchdown "^.*16/Jun/2010", regular;//カーソル移動
delete;//削除

//自分自身のアクセスを削除するサンプル
//正規表現でマッチした行頭~改行を空文字に置換
replaceallfast "^127.0.0.1.*n", "", regular;
replaceallfast "^localhost.*n", "", regular;
replaceallfast "^192.168.0.*n", "", regular;
replaceallfast "^c-loft.com.*n", "", regular;

//ファイル名に日付を付けて保存(日々のバックアップ用)
saveas "access_bak_"+year+month+day+hour+minute+".log";

//固定ファイル名で保存(これがWebLog Expert Liteに渡す用)
saveas "access_bak_for_anylyze.log";

//最後尾にカーソル移動
gofileend;

//ログ整形終了

//整形したログをWebLog Expert Liteに渡すWSH(VBScript)スクリプト(Analyze.vbs)を起動
run "CMD.EXE /c cscript.exe " + ""C:\hoge\Analyze.vbs"";

 
 
 

WSH(VBScript)スクリプトによるWebLog Expert Liteの制御

コマンドライン引数での制御ができないソフトなので、
WSHスクリプトでウィンドウに対してキーボード押下メッセージを送信することで制御します。
(このソフトの解析開始ショートカットはAlt, F, Aキー押下です。)

キーボード押下メッセージはアクティブウィンドウに対して行われるため、
事前にAppActivateメソッドによりウィンドウをアクティブにしておきます。

Analyze.vbs

'WebLog Expert Liteを起動
Set objShell = WScript.CreateObject("WScript.Shell")
Set objExec = objShell.Exec("C:hogeWebLog Expert LiteWLELite.exe")

'WebLog Expertのウィンドウ出現待ち
Do Until objShell.AppActivate(objExec.ProcessID)
	WScript.Sleep 1000
Loop

'解析開始
'キーボードショートカット押下メッセージ送信(Alt, F, A)
WScript.Sleep 100 '調整(早過ぎると空振りする?)
objShell.SendKeys "%"	'Alt
objShell.SendKeys "f"	'f
objShell.SendKeys "a"	'a

'WebLog Expert Liteが解析結果HTMLをブラウザに渡す
'そのブラウザの起動を待つ
'ウィンドウタイトルとして"c-loft.com解析のレポート"をもつウィンドウ出現待ち
Do Until objShell.AppActivate("c-loft.com解析のレポート")
	WScript.Sleep 1000
Loop

'WebLog Expert Liteを終了
objExec.Terminate


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です