Logrotate è un’utility molto comoda per gestire dei log in Linux, consente di disporre di molte opzioni come la rotazione automatica, la compressione e l’invio tramite e-mail dei file di log.
I log li possiamo ruotare ogni ora, giorno, settimana o mese.
Logrotate è installato già in quasi tutte le distribuzioni ed è eseguito tramite cron.
I due file più importanti di questa utility sono /etc/logrotate.conf e/var/lib/logrotate.status.
In altri sistemi potrete trovare /var/lib/logrotate/status invece di /var/lib/logrotate.status.
/etc/logrotate.conf è il file contenente la configurazione dello strumento invece nel secondo file abbiamo le informazioni relative all’ultima rotazione dei log.
Le opzioni disponibili in /etc/logrotate.conf vengono usate come default per gestire i log ma possiamo specificare impostazioni differenti da applicare a ogni file di log aggiungendo i file di configurazione nella cartella/etc/logrotate.d.
Le opzioni più importanti che troviamo in /etc/logrotate.conf sono:
rotate <num> – Il numero di volte che i log ruoteranno prima di essere rimossi.
daily – La rotazione deve essere effettuata ogni giorno.
weekly – La rotazione deve essere effettuata ogni settimana.
monthly – La rotazione deve essere effettuata ogni mese.
notifempty – Non eseguire la rotazione se il log risulta vuoto.
compress – Comprimere il file dopo la rotazione.
delaycompress – Rinviare la compressione alla prossima rotazione.
missingok – Se non risulta presente un log non deve essere generato un errore ma l’operazione deve essere continuata con il file successivo.
create <mode> <owner> <group> – Dopo la rotazione viene creato un nuovo file con queste caratteristiche.
Il file /etc/logrotate.conf sarà quindi uguale al seguente
weekly
# keep 4 weeks worth of backlogs
rotate 4
# send errors to root
errors root
# create new (empty) log files after rotating old ones
create
# uncomment this if you want your log files compressed
#compress
1
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d
# no packages own lastlog or wtmp –we’ll rotate them here
/var/log/wtmp {
monthly
create 0664 root utmp
rotate 1
}
/var/log/lastlog {
monthly
rotate 1
}
Da notare la presenza dell’opzione include /etc/logrotate.d.
Questo settaggio dice che le applicazioni che generano log possono utilizzare logrotate inserendo un file di configurazione in questa cartella.
Installando apache viene creato un file httpd con un contenuto del tipo:
/var/log/httpd/*log {
missingok
notifempty
sharedscripts
postrotate
/sbin/service httpd reload > /dev/null 2>/dev/null || true
endscript
}
In questo file notiamo un parametro: postrotate.
Le opzioni prerotate e postrotate consentono di specificare gli script da eseguire prima e dopo la rotazione dei log.
Un’altra utile opzione è sharedscripts con la qualche si specifica che lo script deve essere eseguito solo una volta e non per tutti i file di cui si esegue la rotazione.
In apache i file di log rotati sono più di uno ma lo script esegue solamente il reload di apache e quindi non occorre che venga eseguito due volte.