Il y a peu, j’ai été confronté à une situation pour laquelle je cherche encore l’explication…
Une installation Tomcat qui ronronnait depuis plusieurs mois s’est mise du jour au lendemain, sans crier gare, à loguer tout ce qu’elle pouvait dans le fichier catalina.out. En moins de 10 minutes mon fichier dépasser déjà les 1 Go ! J’ai écumé l’internet mondial en quête d’une solution, mais en vain 🙁 !
Tous les liens et solutions un temps soit peu corrects menaient tous à la documentation Tomcat sur les logs qui pour ma part n’a pas été d’un grand secours …
Du coup pour mettre fin à mon problème je n’ai trouvé qu’une solution de contournement que voici.
catalina.out
Lors de l’exécution de Tomcat sous unix, la sortie de la console est habituellement redirigé vers le fichier nommé catalina.out.
Tout ce qui est écrit vers System.err/out sera écrit dans ce fichier.
Emplacement de catalina.out :
[shell]/var/log/tomcat6/[/shell]Le nom catalina.out est configurable en modifiant la variable d’environnement « CATALINA_OUT » du fichier catalina.sh situé dans le dossier des scripts de démarrage de Tomcat :
[shell]/usr/share/tomcat6/bin[/shell]Valeur par défaut de la variable d’environnement « CATALINA_OUT »
[shell]CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out[/shell]Nous allons modifier cette valeur par défaut pour /dev/null.
/dev/null est un fichier spécial des systèmes d’exploitation Unix. Ce pseudo-périphérique (device, en anglais) sert à rediriger un contenu dont on n’a pas besoin, et qui ne doit pas être sauvegardé ni affiché à l’écran. Toute information envoyée vers ce « périphérique » est automatiquement détruite. Ce périphérique est appelé null et il est situé dans le répertoire « /dev » où sont répertoriés les périphériques. On envoie donc ce qu’on ne veut pas garder vers ce « /dev/null ».
Tomcat
Arrêt de Tomcat :
[shell]service tomcat6 stop[/shell]Suppression du fichier de log catalina.out :
[shell]rm /var/log/tomcat6/catalina.out[/shell]Edition du fichier catalina.sh :
[shell]nano /usr/share/tomcat6/bin/catalina.sh[/shell]Nano est un simple éditeur de texte qui n’offre pas de fantaisie. Nano permet d’éditer simplement et rapidement les fichiers textes, mais certains l’utilisent pour leurs travaux documentaires (aide à l’utilisation de nano).
Remplacer la valeur « $CATALINA_BASE »/logs/catalina.out de la variable CATALINA_OUT par /dev/null. La ligne du fichier catalina.sh devrait ressembler à ceci :
[shell]CATALINA_OUT=/dev/null[/shell]N’OUBLIER PAR D’ENREGISTRER AVANT DE QUITTER
Redémarrage de Tomcat :
[shell]service tomcat6 start[/shell]Garder à l’esprit que cette solution est un contournement car elle ne respecte pas les bonnes pratiques et ne colle pas avec la documentation Tomcat. Les ressources systèmes sont sollicités pour écrire des logs dans le vide. Cependant, bien que cette solution ne soit pas à proprement parler propre, elle a le mérite de fonctionner et d’éviter des crashs machine car votre disque dur est saturé en log.
Maintenant Tomcat peut loguer la terre entière sans remplir le moindre octet de votre disque dur 🙂 .
Je reste bien entendu preneur d’une solution propre fonctionnant à coup sûr à 100%.