Los ficheros de log son tremendamente útiles para depurar y ver que problemas o que procesos acaban correctamente en nuestro sistema, pero en ocasiones pueden crecer tanto que se convierten en difíciles de manejar y de procesar o incluso pueden llegar a llenar nuestro disco, por eso tenemos una gran herramienta ya incluida en Linux llamada “logrotate” que nos ayudará a gestionarlos.

Muchas de las aplicaciones que mas log generan ya llevan en su instalación por defecto configurar también su “logrotate” como por ejemplo Apache, voy a explicar como hacer para activar el logrotate en una aplicación que no lo lleva..

La configuraciones de “logrotate” se almacenan en: “/etc/logrotate.d/” vamos a poner un ejemplo para una config típica de apache y explicar sus opciones, puedes conocer el resto de opciones utilizando el comando “man logrotate”

/var/log/apache2/error*.log {
	rotate 4
	size 10G    
        daily   
	compress
	postrotate
            /usr/sbin/apachectl restart > /dev/null
	endscript
}

Es una configuración de ejemplo que puede tener más o menos sentido pero la he puesto así para poder ejemplificar las posibilidades que suelo utilizar para este tipo de configuraciones.

rotate 4: significa que se almacenarán 4 ficheros rotados ademas del fichero original a rotar, una vez que se supera el número “4” se van eliminando los ficheros más antiguos.
size 10G: los ficheros se rotarán cuando tengan un tamaño de 10G o más.
daily: será rotado diario cumpliendo el resto de condiciones.
compress: el fichero rotado será comprimido.

Lo siguiente entre “postrotate” y “endscript” serán los comandos que queremos ejecutar cuando se haga el rotado del fichero, normlamente un reinicio del servicio para el que estamos rotando los log para que haga “flush” de datos y cree un nuevo fichero de log.

El formato del fichero que nos quedará será de este tipo:

nombreoriginal.log-YYYYMMDD

est voilá!