Logrotate: Elimina Tomcat / JBoss Logs più vecchio di n giorni
-
21-12-2019 - |
Domanda
Non ho trovato una soluzione per eliminare i registri Old Tomcat o JBoss o altri registri Timestampd: Catalog.log. /server.log. .Fondamentalmente questi tronchi vengono ruotati da JBoss come: server.log, server.log.20131201, server.log.20131203 e così via.
C'è un modo in cui posso usare il Logrotate per eliminare i registri più vecchi di n giorni?Non voglio usare Trova all'interno postrotati o modificare le proprietà di registrazione JBoss / Tomcat.Voglio solo sapere se il Logrotate può effettivamente raggiungere questo su è proprio.So che non è molto produttivo ma sono bloccato con un problema in cui ho bisogno di rispondere per questo.
Soluzione
Se non si desidera utilizzare find
all'interno postrotate
, No, non puoi.
logrotate
considera ogni istanza di server.log
ruotato da Tomcat / JBoss come un file diverso, e poiché sono univoci, logrotate
li ruotano solo una volta. maxage
- La direttiva che rimuove i registri ruotati più vecchi dei giorni n
- Viene controllato solo se il logfile deve essere ruotato, in modo che maxage
sia eseguito solo una volta e non può tenere traccia dell'età del file.
Tuttavia, se cambi idea sull'utilizzo di find
, logrotate
può aiutarti a semplificare la gestione dei file di registro creati da Tomcat e Jboss. Lo uso per comprimere e rimuovere i vecchi file con un file di configurazione come questo:
/path/to/logs/server.log.????-??-?? {
compress
compresscmd /usr/bin/bzip2
nocreate
nodateext
ifempty
missingok
rotate 1
size 0
start 0
lastaction
# Remove rotated files older than 180 days
find /path/to/logs -name 'server.log.????-??-??.0.bz2' -mtime +180 -exec rm {} \;
endscript
}
.
Dove:
- .
-
rotate 1
ecompress
Rinomina e compressano, dicono,server.log.20131201
aserver.log.20131201.0.bz2
. Il0
tra il timestamp e l'estensione.bz2
proviene dastart 0
. -
size 0
Assicura che i file siano sempre rinominati e compressi. - Il blocco
lastaction
rimuove i file rotati di età superiore a 180 giorni.
Altri suggerimenti
Logrotate può gestire i tuoi registri rotandoli e eventualmente mantenere un numero limitato di registri ruotati.Ma Afaik può farlo solo per i registri che gestisce direttamente.Se i tuoi registri sono già ruotati da qualche altro agente (I.e. Tomcat stesso), Logrotate non può fare nulla, semplicemente perché non sa nulla della rotazione eseguita da qualcos'altro.
Quindi la risposta è no, non è possibile utilizzare il Logrotate per eliminare i registri non gestiti da sola (e penso che non sia nemmeno destinato a fare qualcosa del genere).
Puoi mettere lo script su /etc/cron.Daily.Ad esempio:
gatto /etc/cron.daily/tomcat-rotati-logs
#!/bin/sh
# erasing tomcat logs older then 7 days
for x in $(find /var/log/tomcat/ -type f -mtime +7);
do
rm "$x";
logger -t TOMCAT-ROTATE-LOGS "Erasing $x [done]";
done
.
o creare una configurazione del logrotate.Per esempio: cat /etc/logtate.d/tomcat
/var/log/tomcat/*.log {
su tomcat tomcat
copytruncate
daily
rotate 6
compress
missingok
}
.
"Su Tomcat Tomcat" - Sta per evitare errori di Logrotate su autorizzazioni errate