Come posso mantenere i file di registro IIS puliti regolarmente?


20

Ho appena scoperto che IIS crea i log indefinitamente e non sembrano esserci impostazioni IIS che elimineranno automaticamente i vecchi file di log. Qual è il modo migliore per tenere sotto controllo i miei registri IIS in modo che non riempiano l'intero disco rigido?


vuoi conservare quelli vecchi in un archivio zip o cancellarli?
Jeff Atwood,

Dovresti gestire tu stesso i file di registro.
Evan Anderson,

CCLeaner ha un'opzione per pulire i file di registro IIS !!!

Risposte:


22

Dovrai eseguire un'attività pianificata per farlo. Ecco uno script Powershell che dovrebbe funzionare.

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

Questo dovrebbe eliminare tutto ciò che è stato modificato l'ultima volta più di 30 giorni fa. Modificare il percorso nella prima riga nel punto in cui sono archiviati i file di registro. Cambia anche il -30 per quanto tempo vuoi conservare i file. -30 significa che eliminerai qualcosa di più vecchio di 30 giorni.

Puoi dare un'occhiata a questo articolo che mostra proprietà diverse per l'oggetto FileInfo se non vuoi usare LastWriteTime.


1
Su Windows Server 2008 R2 (PS 2.0) ho dovuto modificare la chiamata Get-ChildItem per essereGet-ChildItem *.* -include *.log
roryWoods

4

Potresti preparare il tuo, ma credo che qualche persona intelligente abbia già scritto questo per te. Dai un'occhiata a IISLogs & IISLogs Lite!

Se tutto ciò che stai facendo è eliminare i log, puoi disattivare la registrazione se non è necessaria! risparmierai un sacco di I / O sul tuo server!


1
Solo un aggiornamento, ma IISLogs Lite non è disponibile da un po 'di tempo e IISLogs non è economico.
Bacon Bits

3

Attualmente sto facendo questo usando uno script di file batch molto semplice:

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

Ho anche inserito una voce Attività pianificata per avviarla quotidianamente e ho persino attivato la funzione di compressione dei file in quella cartella: tutte queste cose hanno risolto insieme il mio problema con i file IIS.

Spiegazione delle opzioni nel file batch:

  • -s o / S: recluta in tutte le sottocartelle
  • -p o / P: percorso
  • -m o / M: maschera file
  • -d o / D: numero di giorni (-180 = più vecchio di 180 giorni)
  • -c o / C: comando da eseguire

Se stai cercando una valida alternativa a Powershell , vedi questa altra risposta : per altri suggerimenti su come ridurre correttamente la cartella IIS LogFiles, dai un'occhiata a questo post .


2

Bene, se si desidera pulirli regolarmente, perché non disabilitare la registrazione delle richieste in IIS? Puoi usare qualcosa come Google Analytics o qualche altro servizio, vedo molte persone dong questo per evitare che il mal di testa con i log IIS influenzi le prestazioni e consumi tutto lo spazio su disco, ma tutto dipende ovviamente dalle tue esigenze.


1

Microsoft suggerisce uno script sul suo sito Web .

Di seguito è una versione modificata che sto usando per le mie esigenze.

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

Nota che sono passato da "DateCreated" a "DateLastModified" poiché la data di creazione intuitiva può essere successiva all'ultima modifica, come nel caso dei file copiati. Probabilmente non vorrai rimuovere i file che sono stati recentemente aggiornati.

Quindi eseguirlo utilizzando cscript.exe (ad esempio, cscript.exe d:\scripts\logRetentionScript.vbs).


0

Creare un'attività pianificata sul server. Nella sezione azioni, vuoi:

  • Azione: avviare un programma
  • Impostazioni: Program = Forfiles
  • Aggiungi argomenti: -p "C: \ inetpub \ logs \ LogFiles" -s -m . / D -45 / C "cmd / c del @path"
  • Inizia tra: C: \

Dagli un programma giornaliero o settimanale. Fatto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.