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: Apache, log, rotar, rotatelogs
July 24th, 2008 at 4:32 am
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
“
July 24th, 2008 at 10:36 am
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/