Rotar log en Apache

Hay varias maneras de rotar logs, pero voy explicar como hacerlo con una utilidad llamada rotatelogs. El post se basa en una distribución Debian y Apache 2. Esta utilidad la podemos encontrar en el paquete apache2-utils, lo instalaremos


$ aptitude install apache2-utils

Una vez instalado tenemos que verificar la ruta en donde se instaló, utilizaremos el siguiente comando


# whereis rotatelogs
rotatelogs: /usr/sbin/rotatelogs /usr/share/man/man8/rotatelogs.8.gz

La salida del comando nos indica que el binario esta en la carpeta /usr/bin, la otra ruta es la entrada en el man lo cual no nos sirve.

whereis es un comando que sirve para localizar archivos binarios, fuentes o páginas de manual.

Luego nos vamos a los archivos de configuración de nuestro servidor en /etc/apache2/sites-enabled/ (ver comentario de este post) y en mi caso edito el archivo de configuración default agregando la siguiente linea


<VirtualHost *>
...
TransferLog "|usr/sbin/rotatelogs /var/log/apache2/error.log 100M"
...
</VirtualHost>

Nota: también se podría haber editado el archivo apache2.conf que se encuentra /etc/apache2, debido al contexto de la directiva.

Expliquemos un poco lo que hemos hecho, la directiva TransferLog le dice a Apache que “entube” la información del log a un programa externo (por eso el signo | al comienzo), el programa lo indicamos entre comillas que en este caso es rotatelogs y luego indicamos los parametros propios de rotatelogs, la ruta del log que rotaremos (/var/log/apache2/error.log) y el tamaño que tendrá el archivo para ser rotado(100M), 100 MegaBytes.

En vez de especificar un tamaño para el rotado, se puede también indicar un tiempo, por ejemplo cada 1 semana


TransferLog "|usr/sbin/rotatelogs /var/log/apache2/access.log 604800"

Nota: el tiempo de rotado se especifica en segundos, en el ejemplo tenemos 7 * 24 * 60 * 60

Y para terminar, al rotar los log podríamos agregarle la fecha en que se roto, para tener más control


 TransferLog "|usr/sbin/rotatelogs /var/log/apache2/%y%m%d_error.log 5M"

Al rotar nos quedaría un archivo como 080101_error.log, %y indica el año en dos dígitos, %m indica el mes con dos dígitos y %d indica el día con dos dígitos.

Tags: , , ,

2 Responses to “Rotar log en Apache”

  1. moz667 Says:
    Gravatar

    creo que tienes una errata, en vez de sites-available deberia ser sites-enabled en

    Luego nos vamos a los archivos de configuración de nuestro servidor en /etc/apache2/sites-availables y en mi caso edito el archivo de configuración default agregando la siguiente linea

  2. admin Says:
    Gravatar

    Muchas gracias por tu aporte. Tienes la razón, ya que los archivos de virtual host que mapea Apache 2 (por defecto) son los que se localizan dentro de la carpeta /etc/apache2/sites-enabled/ y no los localizados en /etc/apache2/sites-available/ Los archivos en /etc/apache2/sites-enabled/ suelen ser symlink que apuntan a archivos alojados en /etc/apache2/sites-available/

    Para el que no tenga bien en claro qué directorio mapea Apache 2 para los virtual host, sólo basta revisar el archivo /etc/apache2/apache2.conf y buscar las rutas indicadas por los “Include”. Por ejemplo en mi instalación por defecto aparece así:

    # Include the virtual host configurations:
    Include /etc/apache2/sites-enabled/

Leave a Reply