IIS Log Dateien löschen, die älter sind als X Tage
Es kann passieren, dass der Ordner in dem der Web-Server die Log-Dateien speichert (C:\inetpub\logs\LogFiles
) mit der Zeit recht groß wird.
Im Internetinformationsdienste (IIS)-Manager selbst kann man nur auswählen, wie oft eine neue Log-Datei erstellt oder wie groß die Log-Datei werden soll. Auch kann eingestellt werden, dass keine neuen Protokolldateien erstellt werden sollen. Allerdings kann nicht eingestellt werden, dass die neusten Dateien behalten und die alten Log-Dateien gelöscht werden.
Wie die IIS Log Dateien, die älter als X Tage sind, trotzdem regelmäßig gelöscht werden können, zeige ich in diesem kurzen Artikel weiter unten.
Möglichkeit #1 – IIS Log Dateien mit CMD Befehl in der Aufgabenplanung bereinigen
Um die IIS Log Dateien, die sich standardmäßig im Ordner C:\inetpub\logs\LogFiles befinden und älter als X Tage sind zu bereinigen, kann man am einfachsten folgende XML-Datei in die Windows-Aufgabenplanung importieren und als Job regelmäßig laufen lassen.
XML-Datei für den Import erstellen
Folgenden Text mit dem Windows-Editor in eine Text-Datei (z.B. namens „IIS Log Cleanup.xml“) auf dem Desktop speichern.
In der Zeile 46 kann schon an dieser Stelle die Zahl 7 und somit die Aufbewahrungsdauer der Log-Files in Tagen angepasst werden (das geht auch später).
<?xml version="1.0" encoding="UTF-16"?> <Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task"> <RegistrationInfo> <Date>2014-05-09T14:36:04.4840502</Date> <Author>Admin</Author> <Description>Löscht IIS-Log-Dateien die älter sind als X Tage</Description> </RegistrationInfo> <Triggers> <CalendarTrigger> <StartBoundary>2014-05-09T22:00:00</StartBoundary> <ExecutionTimeLimit>P1D</ExecutionTimeLimit> <Enabled>true</Enabled> <ScheduleByDay> <DaysInterval>1</DaysInterval> </ScheduleByDay> </CalendarTrigger> </Triggers> <Principals> <Principal id="Author"> <UserId>S-1-5-18</UserId> <RunLevel>LeastPrivilege</RunLevel> </Principal> </Principals> <Settings> <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy> <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries> <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries> <AllowHardTerminate>true</AllowHardTerminate> <StartWhenAvailable>false</StartWhenAvailable> <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable> <IdleSettings> <StopOnIdleEnd>true</StopOnIdleEnd> <RestartOnIdle>false</RestartOnIdle> </IdleSettings> <AllowStartOnDemand>true</AllowStartOnDemand> <Enabled>true</Enabled> <Hidden>false</Hidden> <RunOnlyIfIdle>false</RunOnlyIfIdle> <WakeToRun>false</WakeToRun> <ExecutionTimeLimit>P1D</ExecutionTimeLimit> <Priority>7</Priority> </Settings> <Actions Context="Author"> <Exec> <Command>forfiles.exe</Command> <Arguments>/P C:\inetpub\logs\LogFiles /S /M *.log /D -7 /C "cmd /c del @file"</Arguments> </Exec> </Actions> </Task>
Die erstellte XML-Datei kann nun als Windows-Aufgabe importiert werden.
Windows Aufgabe für die Log Bereinigung erstellen
Windows Aufgabenplanung starten
Im rechten Bereich unter „Aktionen“ den Punkt Aufgabe importieren… anklicken.
Die von uns erstellte XML-Datei öffnen.
Einstellungen des Jobs kontrollieren und anpassen
Nun können die Einstellungen kontrolliert und angepasst werden. Z.B. kann das ausführende Konto im Reiter „Allgemein“ verändert werden.
Oder im Reiter „Trigger“ kann die Häufigkeit der Bereinigung eingestellt werden (die importierte Aufgabe ist auf täglich 22 Uhr eingestellt).
Wie alt die Log-Dateien werden dürfen, bevor sie gelöscht werden, kann im Reiter „Aktionen“ eingestellt werden (hier werden sie 7 Tage aufbewahrt).
Dazu die Zeile „Programm starten“ doppelklicken und im Feld „Argumente hinzufügen“ die Zahl 7 zwischen /D -7 /C
anpassen.
Wenn alle Einstellungen in Ordnung sind, mit OK bestätigen, damit die Aufgabe erstellt wird.
Hier ist die eigentliche Magie
Falls man den Job nicht aus dieser XML-Datei importieren möchte, so kann man die Aufgabe manuell erstellen und folgende Zeile als Aktion verwenden (die 7 [Tage] Aufbewahrungsfrist vorher anpassen):
forfiles.exe /P C:\inetpub\logs\LogFiles /S /M *.log /D -7 /C "cmd /c del @file"
Möglichkeit #2 – IIS Log Dateien mit PowerShell-Skript und Aufgabenplanung bereinigen
Alternativ könnte man die alten IIS-Log Dateien mit einem PowerShell Skript und dem Task Scheduler löschen.
Dazu ein PowerShell-Skript mit folgendem Inhalt erstellen
# PowerShell Skript löscht die IIS Log-Dateien die älter sind als 7 Tage get-childitem -Path C:\inetpub\logs\LogFiles -recurse | where-object {$_.lastwritetime -lt (get-date).addDays(-7)} | Foreach-Object { del $_.FullName }
und im Windows Task Scheduler z.B. täglich laufen lassen.
Wenn das PowerShell-Skript IIS_Log_loeschen.ps1
heißen und im Ordner C:\Scripts\
liegen würde, dann wäre die Zeile zum Aufruf in der Aufgabenplanung folgende:
powershell.exe -noprofile -NonInteractive -executionpolicy ByPass -File "C:\Scripts\IIS_Log_loeschen.ps1"
Alternativen
Log-Dateien auf eine zweite Festplatte verlagern oder Log-Erstellung deaktivieren
Falls eine zweite Festplatte zur Verfügung steht, so könnte man im Internetinformationsdienste (IIS)-Manager unter Sites/<Site>/Protokollierung den Standardpfad zu den IIS-Logdateien (
%SystemDrive%\inetpub\logs\LogFiles
) auf die dedizierte Festplatte einstellen oder ganz deaktivieren.
ISS Log-Ordner „C:\inetpub\logs\LogFiles“ komprimieren
Hinweis: Die Komprimierung des Log-Ordners könnte evtl. die SharePoint-Performance beeinträchtigen. |
Falls die Web-Server Log-Dateien im Standardpfad (%SystemDrive%\inetpub\logs\LogFiles
) liegen, dann könnte man folgendermaßen die Komprimierung dieses Ordners aktivieren.
IIS-Manager öffnen.
Den Server auf der linken Seite markieren und entweder im Kontextmenü (rechte Maustaste) oder auf der rechten Seite „Beenden“ (ansonsten wird später evtl. ein „Fehler beim Übernehmen der Attribute“ angezeigt, da die Log-Files noch im Zugriff sind).
Im Windows-Explorer den Pfad C:\inetpub\logs
öffnen.
Eigenschaften des darin liegenden Ordners „LogFiles“ öffnen (rechte Maustaste).
In den Eigenschaften des Ordners „LogFiles“ auf den Button „Erweitert“ klicken.
Im Fenster „Erweiterte Attribute“ die Option „Inhalt komprimieren, um Speicherplatz zu sparen“ aktivieren und mit OK bestätigen.
Im Fenster „Änderungen der Attribute bestätigen“ die Option „Änderungen für diesen Ordner, untergeordnete Ordner und Dateien übernehmen“ aktivieren (bzw. aktiviert lassen) und mit OK bestätigen.
Wenn der Komprimierungsvorgang beendet ist, wird der Name des Ordners LogFiles in blauer Schrift dargestellt.
Den Web-Server im IIS-Manager wieder starten.
Der Beitrag Alte IIS C:\inetpub\logs\LogFiles nach X Tagen bereinigen erschien zuerst auf Die SharePoint-Wiese.