読者です 読者をやめる 読者になる 読者になる

apache 画像系をアクセスログに出力しない設定

apacheのログ解析をするための設定

#combinedにしないとリファラとUAがアクセスログに出ない(デフォルトでcombinedになっているはず)
CustomLog logs/access_log combined

#画像系をアクセスログに出さない
SetEnvIf Request_URI "\.(gif)|(jpg)|(png)|(css)|(js)$" nolog

#サービスごとにログを分ける
<virtualHost *:80>
  CustomLog logs/access_log_sample combined env=!nolog
</virtualHost>

バーチャルホストでいくつもサイト運営している状態で生ログからアクセス解析したい場合、サイトごとにログを分けないとURLが相対アドレスなのでどれがどれだか分からなくなる。

その他、ボットや自分のIPからのアクセスをログに出さないようにしたり、ローテートの期間を増やしたりなど必要に応じて実施する。

15/8/30追記
今回、完全に上記の設定について忘却していたのでもう一度まとめる。

上記のSetEnvIfは「nolog」という環境変数を定義している
CustomLogでは、その「nolog」の変数を使用している。
よって、上記の意味は、SetEnvIfで「nolog」が各画像系リクエストである、という定義を行い、さらにCustomLogでログからnologを除くよ、という定義をしている。もう絶対に忘れないこと。って言っても絶対に忘れる。死にたい。

もう1個はまったのが、CustomLogの設定がなぜか効かなかった。
理由は簡単。confのもっと上のところでCustomLogの定義がしてあったから。
だから<virtualHost *:80>の中とかに個別に上書きをしないといけなかった。
あほだわ、本当に。

あと、SetEnvIfの設定は以下のようにするのがいいみたい。
こうしないと末尾がリスト内の拡張子で終わるという設定にならない。

SetEnvIf Request_URI "\.(jpg|jpeg|png|gif|css|js|ico)$" nolog