(当社メンバーの検証記事です)

Apacheのアクセスログフォーマットを改良することで会員サイトのユーザIDをログに記録することが可能です。アクセスログにユーザIDが記録されていればCookieベースより安定的にユーザ単位でアクセス履歴が追跡しやすくなります。


(1)Apache のアクセスログの設定を変更
/etc/httpd/conf/http.conf
----------------------------------------
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
----------------------------------------
 ↓↓↓
----------------------------------------
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %{MEMBER_ID}e" combined
----------------------------------------
※変更後にApacheを再起動します。


(2)ユーザIDを記録したいページで環境変数にユーザIDを代入
phpの場合、以下の記述を追加します。
----------------------------------------
<?php
// 環境変数に値を書き込み
apache_setenv("MEMBER_ID","MyID012345");
?>
----------------------------------------
※ここではユーザIDを直接書いていますが、実際に導入する場合は、セッション変数などに格納したユーザIDを代入します。


アクセスログの末尾にユーザIDが追加されます。
-- 変更前 --------------------------------------
192.168.1.32 - - [18/Jun/2014:14:26:42 +0900] "GET / HTTP/1.1" 200 33215
"-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/35.0.1916.153 Safari/537.36"
----------------------------------------
 ↓↓↓
-- 変更後 --------------------------------------
192.168.1.32 - - [18/Jun/2014:14:26:42 +0900] "GET / HTTP/1.1" 200 33215
"-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/35.0.1916.153 Safari/537.36" MyID012345
----------------------------------------