2007年10月27日土曜日

Apacheでログを年月別のファイルにする方法

(2007/11/05:変更
 ローテーションのトリガーをファイルサイズから時間に変更。こうしないと年月単位のログにならない
 ここで指定する時間は、1970/1/1 0:00:00からの経過時間を元に計算される。Apacheを起動/再起動してからの時間ではない。
 また、GMT以外の日付を使う場合は"-l"オプションを付ける。
 参考:[Apache-Users 6474] Re: rotatelogs の時刻設定

Apache付属のrotatelogsを使えば簡単にできる。
httpd.confで、CutomLogの設定を下記のようにする。

CustomLog "|bin/rotatelogs logs/access.%Y%m.log 5M" common
CustomLog "|bin/rotatelogs -l logs/access.%Y%m.log 86400" common

ファイルサイズ(この例では5MB)は環境に合わせて変える。
最後のcommonのとこは忘れがちなので注意。(これも状況に合わせて変える。)
envとか付けたいなら付けられるのは普通のCustomLogと一緒。

マニュアルを見るとErrorLogについてもできるようだが、Apache2.2.5/Windowsの環境ではできなかった。(Apacheが起動しなかった。)
でもよく考えたらエラーログはそんなに肥大化しないから、ローテーションする必要ない。


(2007/11/01 追記)
rotatelogsを使うと、Windowsのプロセスがどんどん増えていった。Apache2.2.4~2.2.5のバグ?(Apache 2.2.4でrotatelogs - 負けないように頑張る日記
Apacheを2.2.6に上げたら解消された。

0 件のコメント:

ブログ アーカイブ

tags