(2011/1/26変更:ログのローテーションはLinuxだったらlogratateに任せればいいかなと思ってWindows限定の書き方をしたけど、Windowsじゃなくてもrotatelogsを使いたい場面はあると思い変更した。)
Apacheのログ出力設定のメモ。
こんなことをしたい場合の例。
- SetEnvIfとenv=!を使って、任意のアクセスをログ出力対象外にする
- ログ内容のフォーマットはcombinedで (もっと詳しくログりたい場合は自分でフォーマットを作る)
(Windowsの場合、)Apacheに標準で付いてくるrotatelogsを使って任意の時間でログファイルを分割する
#ログに残さないアクセス元
SetEnvIf Remote_Addr 127.0.0.1 nolog
#前方一致でも可
SetEnvIf Remote_Addr 192.168. nolog
#月ごとにローテーションする場合は%Y%m
CustomLog "|bin/rotatelogs -l logs/access_%Y%m.log 86400" combined env=!nolog
と、思ったら3年前に自分で既にメモしていた... → floatingdays: ApacheでURIに応じてアクセスログを分ける方法
2 件のコメント:
初めてコメントさせて頂きます。
月毎にローテーションする方法を調べていて、たどり着きました。
「86400」と指定すると1日毎にローテートするような気がしますが、この方法でうまく運用できていらっしゃいますか?
それとも、私の認識不足でしょうか。
kirifueさん、コメントありがとうございます。
「86400」を指定すると、毎日深夜0時にログファイルを切り替えますが、ファイル名として「logs/access_%Y%m.log」を指定しているので、月が変わっていなければ、結果的に同じファイルにログを書き込みます。
例えば今ならログファイルは「access_201205.log」になります。
月毎にログファイルを替えることのキモは、「86400」の方ではなく、ファイル名の中の「%Y%m」の部分です。
(参考:
http://fdays.blogspot.jp/2007/10/apache.html )
コメントを投稿