Logrotate
Versione del 14 gen 2026 alle 14:07 di Andrea (discussione | contributi) (Creata pagina con "← Torna ad Linux / Debian / Ubuntu Category:Debian Category:Unix == Cos’è logrotate == logrotate è uno strumento che: *...")
← Torna ad Linux / Debian / Ubuntu
Indice
Cos’è logrotate
logrotate è uno strumento che:
- ruota i file di log (li rinomina)
- li comprime
- li elimina dopo un certo tempo
- evita che i log crescano all’infinito
Su Debian è usato di default per log di sistema, Apache, Nginx, ecc.
Come viene eseguito
Su Debian 11, logrotate:
- non gira come demone
- viene eseguito una volta al giorno tramite cron
- /etc/cron.daily/logrotate
Configurazione globale
Il file di configurazione con le opzioni globali del programma è
/etc/logrotate.conf
Opzioni:
- weekly rotazione settimanale
- rotate 4 mantiene 4 file ruotati
- create crea un nuovo file vuoto dopo la rotazione
- compress comprime i log vecchi (.gz)
- delaycompress comprime dal secondo giro in poi
- include /etc/logrotate.d carica le config dei servizi
I file di configurazione dei servizi sono in
/etc/logrotate.d
Configurazioni per singolo servizio
Cartella con i servizi configurati:
/etc/logrotate.d/
Ogni file in questa directory definisce come ruotare i log di uno specifico servizio.
|
Esempio: /etc/logrotate.d/apache2 /var/log/apache2/*.log {
daily
rotate 14
compress
delaycompress
missingok
notifempty
sharedscripts
postrotate
systemctl reload apache2 > /dev/null
endscript
}
|
Esempio: /etc/logrotate.d/lsyncd /var/log/lsyncd/lsyncd.log /var/log/lsyncd/lsyncd.status {
daily
rotate 7
missingok
notifempty
compress
delaycompress
copytruncate
}
|
Direttive più importanti
- Frequenza daily
- Numero di rotazioni rotate 7 mantiene 7 log vecchi, poi elimina i più vecchi
- Compressione compress e delaycompress
- Creazione del nuovo file create 640 root adm Permessi + utente + gruppo
- Gestione errori
- missingok se il file non esiste, non è errore
- notifempty non ruota se il file è vuoto
Script primala rotazione
prerotate comando endscript
Script dopo la rotazione
postrotate comando endscript
Usato per:
- ricaricare servizi
- inviare segnali
- aggiornare PID
Come avviene la rotazione (passo passo)
Supponiamo:
/var/log/app.log {
daily
rotate 3
compress
}
Dopo la rotazione:
app.log ← nuovo file app.log.1.gz app.log.2.gz app.log.3.gz
Al giro successivo:
- app.log.3.gz viene eliminato
- tutto scala di un numero
Stato delle rotazioni
logrotate mantiene lo stato in:
/var/lib/logrotate/status
Serve per sapere quando è stata fatta l’ultima rotazione, anche se il job è giornaliero.
Testare una configurazione
Debug (non modifica nulla)
logrotate -d /etc/logrotate.conf
Forzare la rotazione
logrotate -f /etc/logrotate.conf
Verificare un file specifico
logrotate -d /etc/logrotate.d/mioservizio