apacheのアクセスログから画像ファイルなどを除外

2016-11-29

Apache のログですがアクセス数が増えてくると、アクセス数に比例してログファイルの容量が増えていきます。またその際ログの書き込みも増えて負荷も増えます。
ログファイルですが、何も設定しないと画像のリクエストなどのログも書き込みを行います。例えば100個の画像ファイルがあるHTML分があるとその100個の画像ファイルへのリクエストがログに出力されますので、負荷も増加しますしアクセスログの容量も増えます。
負荷の軽減・アクセスログの肥大化防止として、必要のないリクエストのログは除外する設定を行います

画像ファイルなどの出力を除外

設定ファイルの抜粋ですが、以下のように設定すると「gifファイル」「jpgファイル」「pngファイル」「icoファイル」を除外することができます。

 
SetEnvIf Request_URI "\.(gif|jpg|png|ico)$" nolog 
CustomLog logs/access.log.%Y%m%d common env=!nolog

※Googleの検索結果でApacheログ 除外などのキーワードでこの記事と同様の除外方法の解説しているページがあると思います。以下のようなパターンだと SetEnvIf Request_URIでの()の解釈が間違っているので注意が必要です

 
SetEnvIf Request_URI "\.(gif)|(jpg)|(png)$" no_log
SetEnvIf Request_URI "\.(gif)|(jpg)|(png)|(JPG)|(ico)$" nolog

特定のIPアドレスの出力を除外

設定ファイルの抜粋ですが、以下のように設定すると「192.168.0. 」を含むIPアドレスのログを除外することができます。

 
SetEnvIf Request_URI 192.168.0. no_log
CustomLog logs/access.log.%Y%m%d common env=!nolog

IPアドレスと画像ファイルなどの除外条件にするには、以下のように設定できます
複数行に除外条件を設定して、CustomLog 〜〜 env=!nolog と設定すれば反映できます。SetEnvIf Request_URIの正規表現の記述方法がわからなければ複数行に設定すればOKかと思います

 
SetEnvIf Request_URI 192.168.0. no_log
SetEnvIf Request_URI "\.(gif|jpg|png|ico)$" nolog 
CustomLog logs/access.log.%Y%m%d common env=!nolog

スポンサーリンク