web-dev-qa-db-ja.com

IISログファイルを定期的にクリーンアップする方法を教えてください。

IISログが無期限に作成され、古いログファイルを自動的に消去するIIS設定がないようです。 IISログを管理して、ハードドライブ全体がいっぱいにならないようにするための最良の方法?

20
Luke

それを行うには、スケジュールされたタスクを実行する必要があります。これが動作するはずのPowershellスクリプトです。

set-location c:\windows\system32\Logfiles\W3SVC1\ -ErrorAction Stop
foreach ($File in get-childitem -include *.log) {
   if ($File.LastWriteTime -lt (Get-Date).AddDays(-30)) {
      del $File
   }
}

これにより、30日以上前に最後に変更されたものがすべて削除されます。最初の行のパスを、ログファイルが保存されている場所に変更します。また、-30を、ファイルを保持する期間に変更します。 -30は、30日より古いものを削除することを意味します。

LastWriteTimeを使用したくない場合は、FileInfoオブジェクトのさまざまなプロパティを示す this article をご覧ください。 。

22
squillman

自分で醸造することもできますが、賢い人がすでにこれを書いていると思います。チェックアウト IISLogsIISLogs Lite!

ログを削除するだけの場合は、不要な場合はログをオフにできます。サーバーに大量のI/Oを節約できます。

4
Nick Kavadias

私は現在、非常に単純なバッチファイルスクリプトを使用してこれを行っています。

forfiles -p C:\inetpub\logs\LogFiles\ -s -m *.log -d -180 -c "cmd /C DEL @File"

また、Scheduled Taskエントリを作成して毎日起動し、そのフォルダのファイル圧縮機能もアクティブにしました。これらすべてにより、IISファイルに関する問題が完全に修正されました。

バッチファイル内のスイッチの説明:

  • -sまたは/ S:すべてのサブフォルダーに再帰します
  • -pまたは/ P:パス
  • -mまたは/ M:ファイルマスク
  • -dまたは/ D:日数(-180 = 180日より前)
  • -cまたは/ C:実行するコマンド

実行可能な Powershell の代替案を探している場合は、IIS LogFilesフォルダーを適切に削減する方法に関するその他の提案について、 この他の回答 :を参照、- この投稿をチェック

3
Darkseal

ええと、それらを定期的にクリーンアップしたい場合は、IISでの要求のログ記録を無効にしてみませんか? IISログがパフォーマンスに影響を与え、すべてのディスク領域を使い果たしてしまうことで頭痛を回避するために、Googleアナリティクスや他のサービスなどの何かを使用する可能性があります。すべての要件に依存します。コース。

2
Mee

Microsoftは そのWebサイトのスクリプト を推奨しています。

以下は、私が私のニーズに使用している修正バージョンです。

Wscript.Echo "Starting log removal"
sLogFolder = "d:\retentiontest"

iMaxAge = 30   'in days
Set objFSO = CreateObject("Scripting.FileSystemObject")
set colFolder = objFSO.GetFolder(sLogFolder)
Wscript.Echo "Removing log files from folder: " & colFolder

For Each colSubfolder in colFolder.SubFolders
        Set objFolder = objFSO.GetFolder(colSubfolder.Path)
        Set colFiles = objFolder.Files
        For Each objFile in colFiles
                iFileAge = now-objFile.DateLastModified
                if iFileAge > (iMaxAge+1)  then
                        Wscript.Echo "Removing File: " & objFile.Name
                        objFSO.deletefile objFile, True

                end if
        Next
Next

コピーされたファイルの場合のように、直感的に作成された日付は最後に変更された日付よりも遅い可能性があるため、「DateCreated」から「DateLastModified」に変更したことに注意してください。最近更新されたファイルを削除したくない場合があります。

次に、cscript.exeを使用して実行します(たとえば、cscript.exe d:\scripts\logRetentionScript.vbs)。

1
Zamicol

サーバーでスケジュールされたタスクを作成します。アクションセクションでは、次のようにします。

  • アクション:プログラムを開始する
  • 設定:Program = Forfiles
  • 引数を追加:-p "C:\ inetpub\logs\LogFiles" -s -m /D -45/C "cmd/c del @path"
  • 開始:C:\

それを毎日または毎週のスケジュールを与えます。できました。

0
Corbett Enders