日々メモ

日々メモしておきたいことを書きとめています。

apache(windows)ログローテーション

2008年05月19日 21時17分15秒 | windows
■環境
・Microsoft Windows Server 2003 Standard Edition
・apache 2.0.52

■問題
・Windows上でapacheを稼動させているサーバにおいてディスク使用率が90%を超えているものを発見。

 原因を調べてみると、apacheのログが10GBを超えており、ディスクを圧迫していることが分かりました。

 Linux環境ではlogrotateによりOSでログのクリアやローテーションが行えますが、
 Windows環境ではOS標準の機能ではログのクリアの仕組みはありません。
 apacheのログローテーションの仕組み(rotatelogs)ではログのローテーションは
 行いますが、クリアは行わないためWindows環境では手動で削除するか、
 タスク等に追加して自動(バッチ等)で削除する必要があります。

■対応
・apacheのログローテーション(rotatelogs)により、日次でログファイルを分割します。
 →apacheのhttpd.confを書き換え。
  □変更前
   ErrorLog logs/error.log
   CustomLog logs/access.log common
  □変更後
   ErrorLog "| bin/rotatelogs.exe logs/error_%Y%m%d.log 86400"
   CustomLog "| bin/rotatelogs.exe logs/access_%Y%m%d.log 86400" common

・タスク実行のバッチファイルにより日次で45日以上前のファイルを削除します。
 →下記バッチファイルを作成しタスク登録(格納場所はログと同じ場所にしました)
  ----------------------------------------------------------------------
  @echo off
  for /f "skip=45" %%F in ('dir /b /o-n access_????????.log') do del %%F
  for /f "skip=45" %%F in ('dir /b /o-n error_????????.log') do del %%F
  ----------------------------------------------------------------------


2 コメント

コメント日が  古い順  |   新しい順
助かります。 (via.)
2009-03-29 08:37:30
早速使わせて頂きます!
返信する
ログローテーション (tnk)
2015-10-14 17:15:03
この記事のおかげで問題が解決いたしました。
返信する