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