Para el rotado de logs se utiliza el demonio logrotate.
Logrotate ha sido diseñado para facilitar la administración mediante el rotado de logs.
Logrotate permite el rotado, compresión, borrado y envío de logs. Se definen políticas para cada archivo con su periocidad y caracteríticas.
Este fichero es el fichero de configuración de logrotate.
Un archivo típico:
# see "man logrotate" for details
# rotate log files weekly
weekly
# keep 4 weeks worth of backlogs
rotate 4
# create new (empty) log files after rotating old ones
create
# uncomment this if you want your log files compressed
#compress
# packages drop log rotation information into this directory
include /etc/logrotate.d
# no packages own wtmp, or btmp -- we'll rotate them here
/var/log/wtmp {
missingok
monthly
create 0664 root utmp
rotate 1
}
/var/log/btmp {
missingok
monthly
create 0664 root utmp
rotate 1
}
Este archivo consta de opciones globales y luego las opciones por cada archivo a rotar.
Es practica habitual el crear ficheros para los ficheros de log a rotar y almacenarlos en un directorio que tipicamente es /etc/logrotate.d/.
Un ejemplo típico para rotar los log de apache es:
/var/log/apache2/*.log {
weekly # rotado semanal
missingok # continuar sin error si el fichero no existe
rotate 52 # numero maximo de ficheros rotado
compress # comprimir cuando se rote
notifempty # no rotar el log si esta vacio
create 640 root adm # permisos, propietario y grupo del fichero rotado
sharedscripts # los scripts de rotado se ejecutan una sola vez
postrotate # tarea a realizar despues del rotado
if [ -f /var/run/apache2.pid ]; then
/etc/init.d/apache2 restart > /dev/null
fi
endscript
}