(Apache 2.0, WindowsXP)
ApacheのログでCookieを出力したい場合は、mod_log_configの機能として
%{Cookie名}C
というフォーマット文字列が使える。
クライアントが
Cookie: cookie1=123, cookie2=456
というCookieヘッダーを送ってきたら、
LogFormat "... %{cookie1}C ..." xxxx
というLogFormatを使えば "123" がログに記録される。
該当するCookie名が送られてこなければ、単に "-" として記録される。
LogFormat "%{sesstest}C,%t,%h,%>s,%D,%m,%U%q" cookielog
とかすると
9fe78323861e33bc4cac7a2142655d72,[05/Jan/2009:11:00:53 +0900], \ 127.0.0.1,200,31250,GET,/sess/test1.php?a=b
という感じになり、CSVとしてExcelとかに読み込めばソートやフィルタがかけやすくて良いかも。("\"で折り返してます)
注意すべきは、あくまでもクライアントが送信したCookieヘッダーが記録されるため、Cookieをクリアしたクライアント乃至は初めてアクセスするクライアントについては "-" として出力されてしまう。
サーバーが送出した "Set-Cookie" までは取り出してくれない。
ちなみに
・「第13回 Apacheのログを活用しよう」
http://www.atmarkit.co.jp/flinux/rensai/apache13/apache13b.html
で紹介されている mod_usertrack は、静的コンテンツメインのサイトの場合にも「Apache側で」ユーザ追跡に使えるCookieを送信してしまおうというモジュール。
なので、コンテンツのほとんどがWebアプリの場合(CMSやSNSなど)は、不要かもしれない。CMSやSNSの基盤側で常にsession cookieをチェックしていたりするのであれば。(んー、でも、Set-Cookieされていない「未ログイン」ユーザーというのがありえる場合は、ユーザ追跡用のCookieを別立てでmod_usertrackで仕込んでおいたほうが良いかも・・・。)
コメント