logrotation :supprimer les journaux Tomcat/jboss datant de plus de n jours
-
21-12-2019 - |
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.
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
etcompress
renommer et compresser, disons,server.log.20131201
àserver.log.20131201.0.bz2
.Le0
entre l'horodatage et le.bz2
l'extension vient destart 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