🙆
Apacheのアクセスログに記録する内容を絞る
Apacheのアクセスログには大量のアクセス記録が保存される。
どのページにアクセスがあったかだけ記録していればよく、JSやCSSや画像のアクセスログは不要である。JSやCSSや画像や「自分」のアクセス記録を排除する。
設定の流れ
-
nolog
フラグの設定ファイルを作成する - 設定ファイルに正規表現で条件を書く
-
nolog
フラグが立ったアクセスは記録しない設定を追加する -
configtest
して問題なければgraceful
する
nologフラグの設定
正規表現にマッチしたらnolog
というフラグを設定する。
以下の内容をhttpd.conf
に追記してもよいが、nolog.conf
というファイルを作成して、インクルードさせるのが良い。
redhat系ならconf.d
ディレクトリに保存するのが良いだろう。
debian系はクソなので、クソ面倒くさい。debianはApacheの設定だけがクソ過ぎる。致命的にダメである。
nolog.conf
# 指定した画像、JS、CSSのアクセスは記録しない
SetEnvIf Request_URI "\.(gif)|(jpg)|(png)|(css)|(js)|(ico)$" nolog
# 指定したIPアドレスのアクセスは記録しない
SetEnvIf Remote_Addr ^192\.168\. nolog
SetEnvIf Remote_Addr ^127\.0\.0\.1 nolog
# 指定したユーザーエージェントのアクセスは記録しない
SetEnvIf User-Agent "crawler" nolog
SetEnvIf User-Agent "spider" nolog
SetEnvIf User-Agent "msnbot" nolog
SetEnvIf User-Agent "bingbot" nolog
SetEnvIf User-Agent "Googlebot" nolog
SetEnvIf User-Agent "SAKURA Cloud Simplemon" nolog
SetEnvIf User-Agent "internal dummy connection" nolog
CustomLog
CustomLog
の末尾にenv=!nolog
を追加する。
nolog
フラグが立っていると、そのアクセスは記録しない。
CustomLog ${APACHE_LOG_DIR}/access-default.log combined env=!nolog
Apacheのリロード
sudo apachectl configtest
sudo apachectl graceful
Discussion