Frage Wie kann ich IIS-Protokolldateien regelmäßig bereinigen?


Ich habe gerade festgestellt, dass IIS unbegrenzt Protokolle erstellt und keine IIS-Einstellungen angezeigt werden, die alte Protokolldateien automatisch bereinigen. Was ist der beste Weg, um meine IIS-Protokolle unter Kontrolle zu halten, damit sie nicht die gesamte Festplatte füllen?


20
2017-09-14 21:28


Ursprung


Möchten Sie die alten in einem Zip-Archiv aufbewahren oder löschen? - Jeff Atwood
Es wird erwartet, dass Sie die Protokolldateien selbst verwalten. - Evan Anderson
CCLeaner hat eine Option zum Löschen von IIS Log Files !!!


Antworten:


Sie müssen dazu eine geplante Aufgabe ausführen. Hier ist ein Powershell-Skript, das funktionieren sollte.

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
   }
}

Dies sollte alles löschen, was vor mehr als 30 Tagen zuletzt geändert wurde. Ändern Sie den Pfad in der ersten Zeile zu dem Speicherort Ihrer Protokolldateien. Ändern Sie auch die -30, wie lange Sie die Dateien behalten möchten. -30 bedeutet, dass Sie alles löschen, das älter als 30 Tage ist.

Sie können es sich ansehen Dieser Beitrag das zeigt andere Eigenschaften für das FileInfo-Objekt, wenn Sie LastWriteTime nicht verwenden möchten.


22
2017-09-14 22:09



Unter Windows Server 2008 R2 (PS 2.0) musste ich den Get-ChildItem-Aufruf ändern Get-ChildItem *.* -include *.log - roryWoods


Du könntest deine eigenen brauen, aber ich glaube, dass eine kluge Person das schon für dich geschrieben hat. Auschecken IISLogs & IISLogs Lite!

Wenn Sie Ihre Protokolle löschen, können Sie die Protokollierung deaktivieren, wenn sie nicht benötigt wird! Sie sparen Ihrem Server viel E / A!


4
2017-10-20 14:09



Nur ein Update, aber IISLogs Lite war für einige Zeit nicht verfügbar und IISLogs ist nicht billig. - Bacon Bits


Ich mache dies gerade mit einem sehr einfachen Batch-Datei-Skript:

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

Ich habe auch einen gemacht Geplante Aufgabe Eintrag, um es täglich zu starten und sogar die Dateikomprimierungsfunktion für diesen Ordner aktiviert: all diese Dinge zusammen mein Problem mit IIS-Dateien für immer behoben.

Erklärung der Schalter in der Batch-Datei:

  • -s oder / S: rekrutiere in alle Unterordner
  • -p oder / P: Pfad
  • -m oder / M: Dateimaske
  • -d oder / D: Anzahl der Tage (-180 = älter als 180 Tage)
  • -c oder / C: Befehl zum Ausführen

Wenn Sie nach einem lebensfähigen suchen Power Shell Alternative, siehe diese andere Antwort: Weitere Vorschläge zum ordnungsgemäßen Reduzieren des IIS LogFiles-Ordners Schaut euch diesen Beitrag an.


3
2017-11-21 02:22





Nun, wenn Sie sie regelmäßig bereinigen möchten, warum deaktivieren Sie nicht die Anforderungsprotokollierung in IIS? Sie können etwas wie Google Analytics oder einen anderen Dienst verwenden, ich sehe viele Leute dong dies zu vermeiden, die Kopfschmerzen mit IIS Logs Auswirkungen auf die Leistung und essen alle Speicherplatz, aber es hängt natürlich von Ihren Anforderungen ab.


2
2017-09-15 01:15





Microsoft schlägt vor ein Skript auf seiner Website.

Unten ist eine modifizierte Version, die ich für meine Bedürfnisse verwende.

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

Beachten Sie, dass ich von "DateCreated" zu "DateLastModified" gewechselt habe, da das Datum, an dem das Datum erstellt wurde, ein späteres Datum als das zuletzt geänderte Datum sein kann, wie dies bei kopierten Dateien der Fall sein kann. Wahrscheinlich möchten Sie keine Dateien entfernen, die kürzlich aktualisiert wurden.

Führen Sie es dann mit cscript.exe aus (z. B. cscript.exe d:\scripts\logRetentionScript.vbs).


1
2017-10-15 18:39





Erstellen Sie eine geplante Aufgabe auf dem Server. Im Abschnitt Aktionen möchten Sie:

  • Aktion: Starten Sie ein Programm
  • Einstellungen: Programm = Forfiles
  • Fügen Sie Argumente hinzu: -p "C: \ inetpub \ logs \ LogFiles" -s -m . / D -45 / C "cmd / c del @pfad"
  • Beginnen Sie in: C: \

Geben Sie einen Tages- oder Wochenplan ein. Erledigt.


0
2017-10-02 14:06