IIS Logfiles löschen – viel Speicher belegt
Der IIS (Internet Information Services) ist der hausinterne Webserver von Microsoft. Die meisten Webseiten im Internet laufen auf Linux Maschinen, da diese sicherer und performanter sind. Aber auch der Microsoft IIS hat seine Vorteile. Manche Applikationen laufen nur auf dem MS IIS. Aber nun mehr zu diesem Beitrag. Ich hatte das Problem, dass auf meinem IIS Webserver der Speicher immer voller und voller wurde. Ich wusste nicht woher das kam und was der Grund ist. Mit einem Tool habe ich dann die Speicherbelegung auslesen lassen. Hier ist mir aufgefallen dass die IIS Logfiles unter “C:\inetpub\logs\LogFiles” stark an Größe zugelegt haben. Einige um die 30-40 GB groß waren die IIS Logfiles. Die Lösung ist einfach: Alte IIS Logfiles löschen. Das ist auch kein Problem, solange man nur die alten LOGs und nicht die neuen Logfiles löschen lässt.
IIS Logfiles sehr groß unter “C:\inetpub\logs\LogFiles“
Mit einem Tool wurde dann die Speicherbelegung der C: Platte ausgelesen. Hier hat sich herausgestellt das die Log Dateien unter “C:\inetpub\logs\LogFiles” sehr groß (30-40 GB) waren. Hier legt der IIS Logdateien an, welche mit “W3SVC*” benamt werden.
Der Webserver legt die Ordner nach den verschiedenen Site-ID´s an.
- Site mit ID 1 = W3SVC1
- Site mit ID 2 = W3SVC2
- Site mit ID 3 = W3SVC3
- etc.
Die Datei “%WinDir%\System32\Inetsrv\Config\applicationHost.Config” beinhaltet mehrere Informationen über die ID´s der WebSites. Wenn man beispielsweise nach “site” sucht, sollten Einträge wie diese zu sehen sein:
<site name="Default Web Site" id="1">
Die Logdateien werden vom IIS leider nicht automatisch gelöscht. Die alten Logfiles auf dem IIS werden aber auch nicht mehr benötigt, das bedeutet, dass wir diese löschen können.
IIS Logfiles löschen
Wie oben schon gesagt, werden alte IIS Logfiles nicht automatisch gelöscht. Aber da wir nur die neuen Logfiles benötigen, aber nicht die alten Logdateien, können wir diese löschen. Meiner Meinung nach ist der Zeitraum von 30 Tagen ein sehr gut gewählter Zeitraum. Also alle Dateien, die älter sind als 30 Tage, können wir bedenkenlos löschen.
Hierzu gibt es sogar ein offizielles VB Script von Microsoft, welches die alten IIS Logs löschen kann. Hierzu öffnen wir den Texteditor, kopieren den Code hinein und speichern diesen unter “Delete-IIS-Logfiles.vbs” ab.
sLogFolder = "c:\inetpub\logs\LogFiles" iMaxAge = 30 'in days Set objFSO = CreateObject("Scripting.FileSystemObject") set colFolder = objFSO.GetFolder(sLogFolder) For Each colSubfolder in colFolder.SubFolders Set objFolder = objFSO.GetFolder(colSubfolder.Path) Set colFiles = objFolder.Files For Each objFile in colFiles iFileAge = now-objFile.DateCreated if iFileAge > (iMaxAge+1) then objFSO.deletefile objFile, True end if Next Next
In Zeile 1 wird angegeben, wo sich die Logdateien befinden und in Zeile 2 in welchem Zeitraum diese gelöscht werden sollen. (Im Beispiel “älter als 30 Tage“).
Um das Script auszuführen, gehen wir wie folgt vor:
- CMD (Eingabeaufforderung) als Administrator starten
- Befehl eingeben:
cscript.exe c:\pathToScript\Delete-IIS-Logfiles.vbs
- Befehl ausführen
Nachdem das VB Script ausgeführt wurde, sollte nun wieder eine Menge Speicherplatz auf dem Webserver freigegeben sein. Um die IIS Logfiles löschen zu lassen, kann man hierzu auch einen Task in der Aufgabenplanung anlegen und diesen einmal in der Woche ausführen lassen. 🙂