Apacheのアクセスログは便利ですが、いざ見ようと思うと大変ですよね。
全てのアクセスが記述されるので、例えばiPhoneのアクセスログだけ見たい場合はわざわざgrepをかけて見る必要があり、かなりめんどくさいです。
ですのでiOSおよびAndroidだけのアクセスログを出せるような設定を簡単にまとめました。
1. httpd.confに
1 2 3 4 5 6 7 |
## 見やすくするため、ログフォーマットのカスタマイズ LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %T" combinedtime ## UserAgentから端末を振分け BrowserMatchNoCase "iPhone" _TERM_OK _TERM_IPHONE="iPhone" _TERM_APPLE BrowserMatchNoCase "iPod" _TERM_OK _TERM_IPHONE="iPod" _TERM_APPLE BrowserMatchNoCase "Android" _TERM_OK _TERM_ANDROID="android" |
上記の設定でログフォーマットのカスタマイズとUserAgentから端末を振り分けます。
例はiPhoneとiPodをアップル端末として認識させてますが、ここはカスタマイズ次第でiPadやガラケーを振り分けすることが可能です。
2. httpd.confのVirtualHostに追加する
1 2 3 4 5 6 |
<VirtualHost *:80> ・・・ 各種設定 ## カスタムログとして振り分けた端末別に収集するようにする CustomLog "|/usr/sbin/rotatelogs /var/www/vhosts/logs/apple_log._%Y%m%d_%H%M%S 86400 +540" combinedtime env=_TERM_APPLE CustomLog "|/usr/sbin/rotatelogs /var/www/vhosts/logs/android_log._%Y%m%d_%H%M%S 86400 +540" combinedtime env=_TERM_ANDROID </VirtualHost> |
サンプルでは/var/www/vhosts/logs/に保存されるように書かれてますが、ここは自由にカスタマイズして確認しやすい場所に変更してください。
同時にアクセスログを1日単位で作成するようにしています。
設定完了後Apacheを再起動すればOK。
注意点として、/var/www/httpd/以外にログを保存するとlogrotateされなくなるので、自分でrotateさせるようにしてください。