Logrotate fichiers avec la date dans le nom de fichier
Je suis en train de configurer logrotate dans RHEL pour tomcat6 journaux. Actuellement, logrotate fonctionne très bien pour catalina.journaux, il est tourné et comprimé correctement.
Le problème est avec les fichiers avec la date en eux comme:
catalina.2012-01-20.log
catalina.2012-01-21.log
catalina.2012-01-22.log
Ces fichiers ne sont pas en rotation. Je comprends que je dois configurer dans /etc/logrotate.d/tomcat6 fichier là où la rotation de catalina.est configuré. Mais je ne suis pas en mesure de le configurer.
Tout ce que je veux est un de ces anciens fichiers compressés quotidienne, à l'exception de la date actuelle fichier journal.
Quelqu'un peut-il m'aider sur ce, s'il vous plaît!!
Merci
Noman A.
- Même problème, avec tomcat. journal de rotation voit chaque catalina.le [date].journal dans un fichier différent. Il dose pas de groupe comme catalina.journal. Il n'est pas de les faire pivoter. Chaque fichier en tant que catalina.[données].log.1.gz. Donc je me retrouve avec 200 fichiers avec l'log.1.gz à la fin.
Vous devez vous connecter pour publier un commentaire.
(Premier post jamais si si, il ressemble à un ivrogne araignée a mis en forme puis désolé)
Après à l'aide de notre ami Google, et je ne me souviens pas où j'ai réussi à obtenir quelque chose en utilisant logrotate (plutôt que de cron ou une autre équivalent).
J'ai suivantes dans /var/log/rsync/:
et suivants logrotate fichier:
j'ai pensé que c'était parfaitement raisonnable. Mais après qu'il a refusé de travailler et de trouver qu'il n'aurait jamais du travail (avec l'aimable autorisation de ce post), je me demandais si elle pouvait être truqués pour le faire fonctionner.
Après beaucoup de tests et de peaufinage, j'ai réussi à fudge il la façon suivante:
dans un logrotate fichier de configuration /etc/logrotate.d/local-rsync. Puis créer le mannequin fichier journal:
alors la force d'un logrotate avec:
qui donne:
Maintenant il suffit d'attendre demain matin...
Je me rends compte que cron serait plus propre mais j'ai un autre élément dans le fichier de configuration de logrotate et je voulais garder les deux ensemble.
Bonus avec le mannequin de fichier est qu'il ne prend pas de place!
Vous pouvez constater qu'il ne semble pas avoir tourné quelque chose un jour. Il m'a fallu du temps pour savoir pourquoi, mais ensuite il a compris. trouvez -mtime +1 est tout les jours (c'est à dire 24*60 minutes) et si le quotidien logrotate coups de pied en moins de 24 heures depuis la dernière fois/de temps les journaux ont été créés alors, il semble parfois ne pas avoir travaillé. Si cela vous dérange, puis à l'aide de 23 heures à trouver -mmin +1380 pourrait être plus approprié.
lastaction/endscript
option que vous m'avez sauvé! MerciJ'ai passé un bon moment à lire beaucoup de documentation. Logrotate ne semble pas être en mesure de regrouper les différents fichiers avec des dates inclus dans le nom du fichier. Logrotate ne peut pas faire ce que nous devons faire.
Vous avez deux options pour changer la fonction de journalisation fournies par java /tomcat afin de ne pas inclure la date dans le nom de fichier.
http://tomcat.apache.org/tomcat-6.0-doc/logging.html
La deuxième et la plus rapide est d'utiliser votre propre petit script pour faire le travail pour vous, à l'aide de
find
. https://serverfault.com/questions/256218/logrotation-when-filenames-includes-date, https://serverfault.com/a/256231/71120Je suis allé avec la deuxième option, parce que nos développeurs ont codé pour les dates dans les noms de fichiers. Donc il doit rester de cette façon.
Le
-mtime +5
ensembles de trouver à seulement rechercher les fichiers qui sont âgés de plus de 5 jours.De
find
la documentation.Mis à jour que par commentaire
Si vous souhaitez supprimer, c'est un moyen rapide de le faire.
Si vous avez besoin d'une autre commande, vous pouvez toujours remplacer le
exec rm {} \;
avec quelque chose d'autre.-exec rm {} \;
, vous pouvez aussi tout simplement faire-delete
dans de nombreuses versions defind
. Je pense que c'est plus clair.-delete
n'est pasrm
.-delete
implique-depth
. Contrairement àrm
, il va supprimer les répertoires vides (ou d'être vidé par la commande). Je suis d'accord mais,-delete
est agréable. Ne savais pas qu'il existait. Merci.Quelque chose comme ceci dans /etc/cron.d/rotate_tomcat_logs:
/chemin/vers/logs/*.journal {
missingok
compresser
tourner 7
}
ce genre de chose ne fonctionne pas normalement parce que, comme d'autres soulignent tomcat a son propre journal de rotation. Vous pouvez utiliser un simple cron pour supprimer les anciens fichiers ou désactiver la rotation sur le journal des accès de la valve. Par la désactivation de la rotation des logs (et possible de changer le nom du fichier patter), le ci-dessus logrotate et d'autres configs fonctionnera très bien.
La ligne de fond est que vous devriez utiliser logrotate ou intégré dans la rotation des logs de tomcat, mais pas les deux en même temps.
D'inclure une date dans la rotation de fichier, vous pouvez probablement utiliser 'dateext' option.
La rotation de fichier doit obtenir créé similaire à ci-dessous
Le seul inconvénient est que vous ne serez pas en mesure d'exécuter plus d'une fois par jour tant que le fichier serait un nom défini pour cette date.
L'exemple ci-dessus est de mon Nginx conteneur docker cours d'exécution dans k8s sur GC. Le logrotate version 3.11.0.
Espère que ça aide!
Mise à jour:
À partir des pages de man https://linux.die.net/man/8/logrotate
Vous pouvez également ajouter des crons au lieu coder en dur logrotate.
De cette façon, vous allez supprimer les journaux de plus de 30 jours, et zip, les journaux âgés de plus de 1.
Probablement, vous pouvez le supprimer de la date à partir du journal des noms de fichiers comme décrit dans
Comment faire pour supprimer le modèle de date de logs de tomcat pour être en mesure d'utiliser logrotate règles.
Cela a fonctionné pour moi au moins pour l'accès localhost journal.
Bien, je n'étais pas entièrement satisfait aucune des réponses, même si celles indiquant que le
logrotate
ne prend pas en charge cette (j'. e. il suffit de supprimer les fichiers mis en rotation par une autre application) scénario sont certainement correctes (soulever une demande de fonctionnalité sur cet outil, peut-être?).Donc, je voudrais partager une autre approche, je suis venu pour. Contrairement à la "
find /path/to/logs -mtime +7 -delete
" solution, ce ne sera pas supprimer tous le vieux journaux après une période de temps spécifiée. Donc, ici, il s'agit, par exemple, une ligne de commande bash qui laisse juste N derniers logs sur le disque (chaque fois qu'il est exécuté):Enfin, pour couvrir le sujet, la dernière solution est de ne pas tourner les fichiers de log (e. g. utilisation
rotatable=false
en cas de Tomcat - voir les docs) et l'utilisation de lalogrotate
comme d'habitude, mais n'oubliez pas de l'utiliser avec le 'copytruncate' option.Suggestions sont les bienvenues...
Dans votre journal de rotation de fichier, utilisez
rotate #
, où # est le nombre de journaux que vous souhaitez conserver avant de les retirer.rotate #
, il va supprimer les anciens après # beaucoup ont été tourné en dehors. Si vous souhaitez compresser, ainsi, utiliser lecompress
commande dans votre rotation de script. linuxcommand.org/man_pages/logrotate8.htmlPour activer le quotidien de la rotation des logs de tomcat [linux] avec postfix de la date de catalina fichier, effectuez les changements suivants.
Télécharger cronolog paquet et l'installer dans le système d'exploitation linux
wget http://pkgs.fedoraproject.org/repo/pkgs/cronolog/cronolog-1.6.2.tar.gz/md5/a44564fd5a5b061a5691b9a837d04979/cronolog-1.6.2.tar.gz
ouvrir apache-tomcat-7.0.65/bin/catalina.sh fichier en utilisant la commande de vi et modifiez les lignes comme indiqué ci-dessous
exemple : /opt/apache-tomcat-7.0.65/bin/catalina.sh
Après les changements ci-dessus enregistrez le fichier et redémarrez tomcat pour appliquer les modifications.