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.

È stato utile?

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 e compress Rinomina e compressano, dicono, server.log.20131201 a server.log.20131201.0.bz2. Il 0 tra il timestamp e l'estensione .bz2 proviene da start 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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top