WindowsのIISにはログを削除する機能が標準ではありません。時限爆弾でダメージを受けた管理者は多いのではないでしょうか!
- IISログを自動的に削除したい
- Cドライブの空き容量が無くなった
- アップデートが実行できない
タスクのスケジュールに登録することで自動的にローテーションが実行されます。
IISのログを自動的に削除する手順
タスクのスケジュールだけで済ませる方法
タスク内にコマンドを書き込むことで、IISログを削除することができます。
forfiles /p “C:\inetpub\logs\LogFiles” /s /m *.* /c “cmd /c Del @path” /d -90
このコマンドを実行すると
- ログの位置は C:\inetpub\logs\LogFiles
- 90日以前のログを削除
タスクを作成するスクリプトを作成しましたので、VBScriptとして作成し、ダブルクリックすると自動的に登録されます。
### AddTask.vbs If WScript.Arguments.Count = 0 Then CreateObject("Shell.Application").ShellExecute "wscript.exe", """" & WScript.ScriptFullName & """ uac", "", "runas" WScript.Quit End If CreateObject("WScript.Shell").Exec("schtasks /create /tn ""auto-delete-iis-log"" /tr ""forfiles /p \""C:\inetpub\logs\LogFiles\"" /s /m *.* /c \""cmd /c Del @path\"" /d -90"" /sc DAILY /st 04:00 /ru System")
スクリプトを作ってタスクに登録する方法
まずは削除バッチを作成します。
### auto-delete-iis-log.bat @echo off setlocal rem IISログファイル格納パス set LOGDIR1=C:\inetpub\logs\LogFiles\W3SVC1 set LOGDIR2=C:\inetpub\logs\LogFiles\W3SVC2 rem 削除対象期間 set DELDATE=90 rem #IISログファイル削除 forfiles /p %LOGDIR1% /m *. log /d -%DELDATE% /c “cmd /c del @path” forfiles /p %LOGDIR2% /m *. log /d -%DELDATE% /c “cmd /c del @path” exit /b 0
あとは作成したバッチをタスクに登録してください。
あとがき
「IISログが削除されない」問題は昔から残ったままです。きっとマイクロソフトは修正しないと思います。
ディスクの空き容量が不足する時限爆弾が仕込まれているので、IISを利用するユーザーは自己防衛のために忘れずにバッチを作成してください。