Gestionar archivos de log con logrotate

última modificación:

Los servidores generan registros continuamente: del sistema y de los servicios que configuramos. Sin ningún control, esos archivos crecen indefinidamente hasta llenar el disco. logrotate es la herramienta estándar en sistemas tipo Unix para gestionar esta rotación de forma automática.

La configuración de logrotate se divide en el archivo principal (/etc/logrotate.conf) y los archivos por servicio en /etc/logrotate.d/. La mayoría de paquetes instalados con apt ya incluyen su propia configuración ahí.

Un ejemplo de configuración para los logs de Apache:

/var/log/apache2/*.log {
    weekly
    rotate 4
    compress
    missingok
    notifempty
}

Las opciones principales son:

  • weekly: rotar una vez a la semana (también existe daily y monthly)
  • rotate 4: conservar 4 copias antiguas antes de borrar
  • compress: comprimir los logs rotados con gzip
  • missingok: no dar error si el archivo no existe
  • notifempty: no rotar si el archivo está vacío

Para aplicar la configuración manualmente (útil para probar):

sudo logrotate -f /etc/logrotate.d/apache2

Con -d podemos ver qué haría sin ejecutarlo realmente:

sudo logrotate -d /etc/logrotate.d/apache2

logrotate se ejecuta automáticamente cada día desde cron (hay una entrada en /etc/cron.daily/), así que una vez configurado no necesita intervención manual.