ApacheでCookieをログに出力する設定と、%{cookie}nと%{set-cookie}nの違い




投稿日:

Apacheでは「usertrack_module」があれば、cookieをログに出力することが出来ます。今回はその設定をしてみます。

【モジュールの確認】

$ /usr/local/apache2/bin/httpd -M 
usertrack_module (shared)

このモジュールが出てこればOK。出てこなければ、有効化(パッケージの場合)かモジュールの追加(ソースの場合)をします。



【httpd.confのバックアップ】

# cp -rp /usr/local/apache2/conf/httpd.conf /usr/local/apache2/conf/httpd.conf.2014061902 



【設定】

# vi httpd.conf


この2行追加で、cookie追跡有効になります。
CookieTracking on
CookieExpires "7 days"
※ 今回は7日で設定。


ログフォーマットに、cookie追加バージョン追加し、ニックネームもつける。今回は分かりやすく「cookie」にしています。
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %D \"%{cookie}n\"" cookie


カスタムログにニックネーム「cookie」を指定する。
CustomLog "logs/access_log" cookie



【設定ファイルの読み込み】

# /etc/init.d/httpd graceful

これでクッキーがログに出力されます。



■ 応用

ちなみに、出力されるCookieにも種類があります。
なお、ここを参考にしました。
新人Webアナリスト必読! 生ログ解析で失敗しないための12のチェックリスト at Nexal の一期一会

【Apache側での出力方法】

クライアントサイドで発行のcookieを残す場合

%{cookie}n ~ mod_usertrackが内部的に出力するもので、リクエスト/レスポンスとは無関係に出力されます。
%{cookie}i ~ リクエストヘッダのCookieを出力します。
%{cookie}o ~ レスポンスヘッダのCookieを出力します。

サーバサイドで発行のcookieを残す場合 上記と同様に、n、i、oが選べます。

%{set-cookie}n ~ mod_usertrackが内部的に出力するもので、リクエスト/レスポンスとは無関係に出力されます。
%{set-cookie}i ~ リクエストヘッダのCookieを出力します。
%{set-cookie}o ~ レスポンスヘッダのCookieを出力します。

今度、cookieについても深く調べてみないと。