🙆
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