Artículos‎ > ‎

Rotación Logs Apache en Windows

Aunque la mayoría de la gente piensa que Windows es más fácil que Linux, esto es falso en la mayoría de las ocasiones. Nos podemos dar cuenta de esto a la hora de realizar algo tan sencillo como rotar los logs de Apache en Windows.

Por la forma que funcionan los descriptores de ficheros en Windows es imposible modificar un fichero mientras esté en uso. Esto nos obligará a tener que parar el servicio Apache para realizar cualquier modificación sobre el fichero de logs. Esto no es necesario en sistemas Linux/Unix, ya que bastaría con hacer un simple logrotate.

 

Para rotar los logs de Apache en Windows desarrollé 2 scripts de procesos por lotes (batch) que se ejecutan como tarea programada por la noche.

El primero se encarga de parar Apache, mover los logs y reiniciar el servicio. El segundo se encarga de comprimir, rotar y borrar los logs antiguos.

[mvlogs.bat]

net stop apache2
move "C:\Apache\logs\error.log" "C:\Apache\logs\error.old"
move "C:\Apache\logs\access.log" "C:\Apache\logs\access.old"
move "C:\Apache\logs\mod_jk.log" "C:\Apache\logs\mod_jk.old"
net start apache2

[logrotate.bat]

move "c:\Apache\logs\zip\archivo7.zip" "c:\Apache\logs\zip\archivo8.zip"
move "c:\Apache\logs\zip\archivo6.zip" "c:\Apache\logs\zip\archivo7.zip"
move "c:\Apache\logs\zip\archivo5.zip" "c:\Apache\logs\zip\archivo6.zip"
move "c:\Apache\logs\zip\archivo4.zip" "c:\Apache\logs\zip\archivo5.zip"
move "c:\Apache\logs\zip\archivo3.zip" "c:\Apache\logs\zip\archivo4.zip"
move "c:\Apache\logs\zip\archivo2.zip" "c:\Apache\logs\zip\archivo3.zip"
move "c:\Apache\logs\zip\archivo.zip" "c:\Apache\logs\zip\archivo2.zip"
7za a -tzip "c:\Apache\logs\zip\archivo.zip" "c:\Apache\logs\access.old" "c:\Apache\logs\error.old" "c:\Apache\logs\mod_jk.old"