Question

Je n'ai pas trouvé de solution pour purger les anciens journaux Tomcat ou Jboss ou tout autre journal horodaté :catalogue.log./serveur.log..Fondamentalement, ces journaux sont alternés par jboss comme :server.log, server.log.20131201, server.log.20131203 et ainsi de suite.

Existe-t-il un moyen d'utiliser logrotate pour supprimer les journaux datant de plus de n jours ?Je ne veux pas utiliser find inside postrotate ou modifier les propriétés de journalisation jboss/tomcat.Je veux juste savoir si logrotate peut réellement y parvenir par lui-même.Je sais que ce n'est pas très productif mais je suis coincé avec un problème pour lequel j'ai besoin d'une réponse.

Était-ce utile?

La solution

Si vous ne voulez pas utiliser find à l'intérieur postrotate, non, tu ne peux pas.

logrotate traite chaque instance de server.log pivotés par Tomcat/JBoss en tant que fichier différent, et comme ils sont uniques, logrotate les fera pivoter une seule fois. maxage - la directive qui supprime les journaux pivotés plus anciens que n jours - n'est vérifié que si le fichier journal doit être alterné, de sorte que maxage n'est exécuté qu'une seule fois et ne peut pas suivre l'âge du fichier.

Cependant, si vous changez d'avis concernant l'utilisation find, logrotate peut vous aider à simplifier la gestion des fichiers journaux créés par Tomcat et JBoss.Je l'utilise pour compresser et supprimer d'anciens fichiers avec un fichier de configuration comme celui-ci :

/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
}

où:

  • rotate 1 et compress renommer et compresser, disons, server.log.20131201 à server.log.20131201.0.bz2.Le 0 entre l'horodatage et le .bz2 l'extension vient de start 0.
  • size 0 s'assure que les fichiers sont toujours renommés et compressés.
  • Le lastaction le bloc supprime les fichiers pivotés datant de plus de 180 jours.

Autres conseils

logrotate peut gérer vos journaux en rotation et éventuellement à maintenir un nombre limité de bûches tournantes.Mais Afaik, cela ne peut le faire que pour les journaux gère directement.Si vos journaux sont déjà tournés par un autre agent (c'est-à-dire tomcat lui-même), la logrotate ne peut rien faire, tout simplement parce que ne sait rien de la rotation effectuée par autre chose.

La réponse est donc non, vous ne pouvez pas utiliser de logrotate pour supprimer des journaux non gérés par lui-même (et je pense que je ne suis même pas destiné à faire quelque chose comme ça).

Vous pouvez mettre un script à /etc/cron.daily.Par exemple:

chat /etc/cron.daily/tomcat-rotate-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

ou créer une configuration de logrotate.Par example: chat /etc/logrotate.d/tomcat

/var/log/tomcat/*.log {
        su tomcat tomcat
        copytruncate  
        daily  
        rotate 6  
        compress  
        missingok
}

"su tomcat tomcat" - signifie éviter l'erreur de logrotate sur les mauvaises autorisations

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top