¿Cómo puedo mantener los archivos de registro IIS limpios regularmente?

20

Acabo de descubrir que IIS acumula registros indefinidamente y no parece haber ninguna configuración de IIS que borre automáticamente los archivos de registro antiguos. ¿Cuál es la mejor manera de mantener mis registros de IIS bajo control para que no llenen todo el disco duro?

Luke
fuente
¿Desea mantener los antiguos en un archivo zip o eliminarlos?
Jeff Atwood
Se espera que administre los archivos de registro usted mismo.
Evan Anderson el
¡CCLeaner tiene una opción para limpiar los archivos de registro de IIS!

Respuestas:

22

Tendrás que ejecutar una tarea programada para hacerlo. Aquí hay un script de Powershell que debería funcionar.

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

Esto debería purgar todo lo que se modificó por última vez hace más de 30 días. Cambie la ruta en la primera línea a donde estén almacenados sus archivos de registro. También cambie el -30 por el tiempo que desee conservar los archivos. -30 significa que eliminará cualquier cosa anterior a 30 días.

Puede echar un vistazo a este artículo que muestra diferentes propiedades para el objeto FileInfo si no desea usar LastWriteTime.

squillman
fuente
1
En Windows Server 2008 R2 (PS 2.0) tuve que modificar la llamada Get-ChildItem para serGet-ChildItem *.* -include *.log
roryWoods
4

Podrías preparar el tuyo, pero creo que una persona inteligente ya ha escrito esto para ti. ¡Mira IISLogs e IISLogs Lite!

Si todo lo que está haciendo es eliminar los registros, puede desactivar el registro si no es necesario. ¡Ahorrará a su servidor muchas E / S!

Nick Kavadias
fuente
1
Solo una actualización, pero IISLogs Lite no ha estado disponible por algún tiempo, e IISLogs no es barato.
Bacon Bits
3

Actualmente estoy haciendo esto usando un script de archivo por lotes muy simple:

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

También hice una entrada de Tarea programada para iniciarla diariamente e incluso activé la función de compresión de archivos en esa carpeta: todas estas cosas juntas solucionaron mi problema con los archivos IIS para siempre.

Explicación de los modificadores en el archivo por lotes:

  • -s o / S: recurse a todas las subcarpetas
  • -p o / P: ruta
  • -mo / M: máscara de archivo
  • -d o / D: número de días (-180 = anterior a 180 días)
  • -co / C: comando para ejecutar

Si está buscando una alternativa viable de Powershell , vea esta otra respuesta : para otras sugerencias sobre cómo reducir adecuadamente la carpeta IIS LogFiles, consulte esta publicación .

Darkseal
fuente
2

Bueno, si desea limpiarlos regularmente, ¿por qué no deshabilita el registro de solicitudes en IIS? Puede usar algo como google analytics o algún otro servicio, veo que muchas personas lo hacen para evitar el dolor de cabeza con los registros de IIS que afectan el rendimiento y ocupan todo el espacio en disco, pero todo depende de sus requisitos, por supuesto.

Mee
fuente
1

Microsoft sugiere un script en su sitio web .

A continuación se muestra una versión modificada que estoy usando para mis necesidades.

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

Tenga en cuenta que he cambiado de "DateCreated" a "DateLastModified" ya que la fecha de creación contraintuitiva puede ser posterior a la última modificación, como puede ser el caso con los archivos copiados. Probablemente no desee eliminar archivos que se hayan actualizado recientemente.

Luego ejecútelo usando cscript.exe (por ejemplo cscript.exe d:\scripts\logRetentionScript.vbs).

Zamicol
fuente
0

Cree una tarea programada en el servidor. En la sección de acciones, quieres:

  • Acción: iniciar un programa
  • Configuraciones: Programa = Forfiles
  • Agregue argumentos: -p "C: \ inetpub \ logs \ LogFiles" -s -m . / D -45 / C "cmd / c del @path"
  • Comience en: C: \

Dale un horario diario o semanal. Hecho.

Corbett Enders
fuente