XREAのアクセスログ(LOG)をCSVに一発変換するための正規表現
2種類のアクセスログ
XREAでは、Webサーバへのアクセスログが毎日早朝に2種類のフォーマットで出力されます。HTML形式とApache生ログ(テキスト)形式です。
HTML形式
標準で入っているアクセスログ解析ツール(analog 6.0)が、毎日午前5時ごろにレポートとしてhtmlファイルを出力します。(出力先は/public_html/log/ )
いろいろな統計情報が見れて面白いのですが、ここからはさらに詳しく追いかけるはできません。
アクセス1件1件、訪問ユーザ一人一人の訪問履歴を詳しく見たい場合、もしくはHTML版と違う切り口で統計分析したい場合は、Apacheの生ログを見る必要があります。
Apache生ログ(テキスト)形式
各ユーザのホームディレクトリ下のlogディレクトリに、ドメイン名.log
ドメイン名.1.log
・・・
ドメイン名.4.log
というテキストファイルがあるかと思います。
生ログが見れない場合は、こちらのページを参考にしてください。
このテキストファイルの中身は、下記のようなフォーマットになっています。
(Apache標準のcombine形式というそうです。)
hoge.example.com - - [14/Mar/2008:00:51:46 +0900] "GET /2008/03/15.html HTTP/1.1" 200 5539 "http://www.google.co.jp/search?q=家庭教師&hl=ja&c2coff=1&rls=GGLD,GGLD:2005-11,GGLD:ja&start=330&sa=N" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)"このままだと見にくいし分析のしようがないので、タブ区切りCSVに変換したいと思います。
タブ区切りCSVにすれば、エクセルに貼り付けて自由に分析することができます。
タブ区切りCSVに変換する方法
秀丸で正規表現を使って置換します。- 秀丸の メニュー>検索>置換 を実行して、置換ダイアログを出す。
- 「正規表現」にチェックを入れる
- 検索ボックスに下記を入力(注1)
^(.*) (.*) (.*) \[(.*)\] "(.*)" (.*) (.*) "(.*)" "(.*)"$
\1\t\2\t\3\t\4\t\5\t\6\t\7\t\8\t\9\n
↓実行画面
エクセルに貼り付けると、下図のようにきれいに分割されます。 注1:秀丸の場合、正規表現エンジンがHmJre.dllである必要があります。
注2:この正規表現自体はPerlやその他スクリプトでも使えます。
■ 追記
一部正規表現に間違いがあったので修正しました。調べたところ、XREAのログ形式は、Apacheのデフォルトのログ形式"Combined"と同じみたいです。
なので、Xrea特有のことは何もなく、Apacheログの一般的な解析手法をそのまま使えます。
記事中の正規表現は、下記のサイトのものを使わせていただきました。
参考:Apache Combined Log を効率的にパースする正規表現メモ