IISログを自動的に削除する Windows

Microsoft

<景品表示法に基づく表記> 本サイトのコンテンツには、商品プロモーションが含まれている場合があります。

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日以前のログを削除
  • IISのログを自動的に削除する

タスクを作成するスクリプトを作成しましたので、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を利用するユーザーは自己防衛のために忘れずにバッチを作成してください。