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
    ↓実行画面
    hidemaru-replace.JPG
  • 全置換を実行
これで、アクセスログがきれいなタブ区切りCSV(=TSV)に整形されます。
エクセルに貼り付けると、下図のようにきれいに分割されます。
excel-log.JPG
注1:秀丸の場合、正規表現エンジンがHmJre.dllである必要があります。
注2:この正規表現自体はPerlやその他スクリプトでも使えます。

■ 追記
一部正規表現に間違いがあったので修正しました。

調べたところ、XREAのログ形式は、Apacheのデフォルトのログ形式"Combined"と同じみたいです。
なので、Xrea特有のことは何もなく、Apacheログの一般的な解析手法をそのまま使えます。

記事中の正規表現は、下記のサイトのものを使わせていただきました。
参考:Apache Combined Log を効率的にパースする正規表現メモ
カテゴリ: