■環境
・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
----------------------------------------------------------------------
・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
----------------------------------------------------------------------