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


20

IISがログを無期限に作成し、古いログファイルを自動的に消去するIIS設定がないように見えることを発見しました。IISログがハードドライブ全体を占有しないように制御下に保つ最良の方法は何ですか?


古いものをzipアーカイブに残しますか、それとも削除しますか?
ジェフアトウッド

ログファイルは自分で管理する必要があります。
エヴァンアンダーソン

CCLeanerにはIISログファイルを消去するオプションがあります!!!

回答:


22

そのためには、スケジュールされたタスクを実行する必要があります。動作するはずの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日より古いものを削除することを意味します。

あなたはで見ることができ、この記事 FileInfoオブジェクトのためのショーに異なる特性を使用して、LastWriteTimeを使用しない場合ということ。


1
Windows Server 2008 R2(PS 2.0)では、Get-ChildItem呼び出しを次のように変更する必要がありましたGet-ChildItem *.* -include *.log
roryWoods

4

自分で醸造することもできますが、賢い人がすでにこれを書いていると思います。IISLogsおよびIISLogs Liteをご覧ください

ログをすべて削除している場合は、不要な場合はログをオフにすることができます!サーバーに大量のI / Oを保存します!


1
単なる更新ですが、IISLogs Liteはしばらく利用できず、IISLogsは安価ではありません
ベーコンビット

3

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

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

また、スケジュールされたタスクエントリを作成して毎日起動し、そのフォルダのファイル圧縮機能を有効にしました。これらのすべてが、IISファイルの問題を完全に修正しました。

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

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

実行可能なPowershellの代替を探している場合は、この他の回答を参照してください。IISLogFilesフォルダーを適切に削減する方法に関する他の提案については、この投稿を参照してください


2

定期的にクリーンアップする場合は、IISで要求のログを無効にしないでください。Googleアナリティクスや他のサービスのようなものを使用できますが、パフォーマンスに影響を与え、すべてのディスクスペースを消費するIISログの頭痛を避けるために多くの人がこれをドンドン見ますが、それはもちろんあなたの要件に依存します。


1

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


0

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

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

毎日または毎週のスケジュールを設定します。できた

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.