Tabla de Contenidos

Rotación de logs

La herramienta que vienen por defecto ya instalada en Centos se llama logrotate. Logrotate es a su vez invocada desde una tarea programada en el cron

El fichero de configuración del logrotate por defecto es logrotate.conf si queremos podemos especificar otros valores para un servicio en particular añadiendo un script dentro de el directorio /etc/logrotate.d/

Por ejemplo un script llamado rotar_logs con el siguiente contenido

 
#directorio donde están los logs de la aplicación 
/home/tomcat/des/logs/*.log
/home/tomcat/pre/logs/*.log
{
 weekly
#rotar cada 7 semanas 
rotate 7
 missingok
 compress
 notifempty
 }

en pro habría que cambiar el rotate 7 por 52 para guardar un año los logs y añadir la opción dateext para guardar el fichero comprimido con la extension de la fecha

Para hacer una comprobación

logrotate -d /etc/logrotate.d/rotar_logs

Para forzar la ejecución

logrotate -f /etc/logrotate.d/rotar_logs

Para crear la tarea programa en el cron podemos hacerlo de dos formas

Mediante crontab

#crontab -e
# Rotar logs con logrotate a las 3 am 
0 03 * * * root /usr/sbin/logrotate /etc/logrotate.conf > /dev/null 2>&1 

Por un script

mejor aún sería crear un script dentro cron.diary llamado, por ejemplo, logrotate para que se ejecute todos los días

nano /etc/cron.daily/logrotate
#!/bin/sh

/usr/sbin/logrotate /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0

Referencias