2010-05-05 12 views
18

Vorrei solo mantenere i registri di accesso degli ultimi n giorni creati da Tomcat Access Log Valve. http://tomcat.apache.org/tomcat-6.0-doc/config/valve.html#Access%20Log%20ValveCome eliminare il log di accesso Tomcat dopo n giorni?

Ma non sembra esserci alcuna configurazione-Attributo per definire per quanto tempo conservare i file di registro? Immagino che questo sia dovuto al fatto che "Access Log Valve" crea solo file di log e non li elimina, è corretto?

+0

su quale sistema operativo? – skaffman

+0

Windows Server R2 – Andreas

risposta

9

Per impostazione predefinita, il registro di accesso è rotatable, pertanto verrà creato un nuovo file ogni 24 ore.

Tomcat non esegue alcuna operazione di manutenzione sui vecchi file, il principio generale su un sistema Unix consiste nell'avere un processo cron impostato sul sistema per archiviare i file più vecchi in una directory di backup e/o eliminarli.

+0

Grazie per la risposta. Hai confermato la mia ipotesi, che i file devono essere cancellati da un cronjob (o da uno script di base visivo su Windows). – Andreas

+0

Come si rimuovono i vecchi registri? Ho provato a farlo sul tempo di modifica, ma in alcuni casi i file di registro sono stati modificati da altri processi/utenti e come tali non rimossi in tempo ... – Guillaume

+0

Preety old ma, lasciando la risposta alla domanda se qualcuno esegue in questo a un certo punto. http://stackoverflow.com/questions/8962477/logrotate-files-with-date-in-the-file-name – OK999

3

Si può cercare di creare config logrotate:

#cat /etc/logrotate.d/tomcat 
/var/log/tomcat/*.log { 
     su tomcat tomcat 
     copytruncate 
     daily 
     rotate 6 
     compress 
     missingok 
} 

"su Tomcat" - ho aggiunto per evitare errori logrotate su permessi errati

3

per Windows, in base alla risposta del Erwan in Tomcat localhost_access_log files cleanup, per la data cartella e recursing in tutte le sottocartelle:

forfiles /p "C:\path\to\httplogs\" /s /m *.log /d -10 /c "cmd /c del @PATH" 

Per provare, basta usare:

01.235.
forfiles /p "C:\path\to\httplogs\" /s /m *.log /d -10 /c "cmd /c dir /b @PATH" 

E quando si ha più suffissi nella cartella di registro, come sia .txt e .log, vedi using FORFILES in batch to delete tmp and bak files older than a week:

for %%t in (.txt, .log) do forfiles /p "C:\path\to\httplogs\" /s /m *%%t /d -10 /c "cmd /c del @PATH" 
Problemi correlati