http://httpd.apache.org/docs/2.0/ja/mod/mod_setenvif.html#setenvif
httpd.conf などに以下のように記述することで、アクセスログの振り分けが可能になる。
# No Log Networks SetEnvIf Remote_Addr 127.0.0.1 nolog # No Log Files SetEnvIfNoCase Request_URI "\.(gif)|(jpg)|(png)|(css)|(js)$" nolog SetEnvIfNoCase Request_URI "robots.txt" nolog # Worms SetEnvIfNoCase Request_URI "default.ida" worm nolog SetEnvIfNoCase Request_URI "root.exe" worm nolog SetEnvIfNoCase Request_URI "cmd.exe" worm nolog SetEnvIfNoCase Request_URI "Admin.dll" worm nolog SetEnvIfNoCase Request_URI "mem_bin" worm nolog SetEnvIfNoCase Request_URI "vti_bin" worm nolog SetEnvIfNoCase Request_URI "msadc" worm nolog SetEnvIfNoCase Request_URI "MSADC" worm nolog # Crawlers SetEnvIfNoCase User-Agent "SurveyBot" crawler nolog SetEnvIfNoCase User-Agent "Googlebot" crawler nolog # Log Setting CustomLog "|/usr/local/apache2/bin/rotatelogs /var/log/httpd/access_log_%Y%m%d 86400 540" combined env=!nolog CustomLog "|/usr/local/apache2/bin/rotatelogs /var/log/httpd/worm_log_%Y%m%d 86400 540" combined env=worm CustomLog "|/usr/local/apache2/bin/rotatelogs /var/log/httpd/crawler_log_%Y%m%d 86400 540" combined env=crawler
SetEnvIf で条件により環境変数を設定
ログファイル指定時に env= として環境変数を指定することでその条件に合うもののみをそのログに含めることができる。
上記の例では
・通常のaccessログに含めないもの → nolog
・ワームの特徴のあるアクセス → worm
・クローラのアクセス → crawler
という環境変数を設定し
・通常のアクセスログ → env=!nolog (=nologでないもの)
・ワームのアクセスログ → env=worm
・クローラのアクセスログ → env=crawler
・nolog のみは ログに残さない
と動作する。