最近、多く頂くのが、Webサーバ(apache)に記録されるアクセスログとcollectに記録されるログの違いは何か?という問い合わせです。
確かにアクセスログという言葉では同じですが、記録される情報量には多くの差があります。
ここでは分かり易く理解して頂くために、apacheのアクセスログとcollectに記録されるログの違いを詳細に説明します。
まず今回、ログの比較をするにあたり検証用のページを用意しました。
このページにはcollelctのJavaScriptタグを設置して以下のログを送信するようにしています。
- アクセスした時にアクセスログを送信
- イベントを発生させるボタンを設置してonClickでイベントログを送信
- POSTリクエストするフォームを設置して次ページ(post.php)に遷移
- post.phpでは、POSTリスクエスとされたパラメタをカスタムパラメタに格納して送信
次に、このページにアクセスしてapacheに記録されるログとcollectに記録されるログを比較します。
操作方法は:
- ページにアクセス
- イベントログを送信するボタンをクリック
- プルダウンメニューを選択し、テキストボックスに入力して実行ボタンをクリック
です。
apacheに記録されたログ
122.***.***.** - - [24/May/2013:16:53:02 +0900] "GET /verification/20130527/ HTTP/1.1" 200 3431 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/534.59.8 (KHTML, like Gecko) Version/5.1.9 Safari/534.59.8" 122.***.***.** - - [24/May/2013:16:53:12 +0900] "POST /verification/20130527/post.php HTTP/1.1" 200 2389 "https://www.xdata.jp/verification/20130527/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/534.59.8 (KHTML, like Gecko) Version/5.1.9 Safari/534.59.8"
※IPアドレスの情報は伏せています。
apacheのログには上記操作方法の1と3のログが記録されています。
ログにはリモートIPアドレスとアクセスしたURL、User-Agentは記録されていますが、セッションやユニークキーの情報が記録されていません。アクセス数が多い場合はユーザーを特定することが困難です。
onClickイベントはサーバにリクエストせずにクライアント(ブラウザ)側で完結しているため、2のログはapacheのログに記録されることはありません。
また、apacheの設定ではPOSTパラメタはログに出力しないようになっているため、/verification/20130527/post.phpのログでは、POSTされたパラメタは記録されていません。
では、上記ログに該当するcollectのログを見てみましょう。
collectに記録されたログ
※IPアドレスの情報は伏せています。
apacheのログに記録された1と2のログの他に、onClickイベントで送信した2のイベントが記録されています。
collectのJavaScriptタグが発行したcookieにより、ユニークキーとセッション情報が記録されています。これによりユーザーを特定して行動を追跡することができます。
また、areaとnameフィールドには、フォームで設定し、post.phpにPOSTリクエストされた「東京都」と「コレクト太郎」という文字列が入っています。
collectのログは情報量が多い
このように、apacheのログと比べてcollectのログには多くの情報が記録されます。
今回は実施しませんでしたが、ページを開いた時にデータベースから情報を抽出し、カスタムパラメタにセットすることで、cookieで管理するユニークキーとデータベースで管理する情報を紐付けてcollectに記録することも可能です。
Webサーバには残らないログをcollectでは残すことができる、これがWebサーバのログとcollectのログの違いになります。