web-dev-qa-db-fra.com

Où configurer les fichiers journaux internes Tomcat7 stdout/stderr

J'utilise Tomcat 7.0.40 avec la configuration log4j conformément à http://Tomcat.Apache.org/Tomcat-7.0-doc/logging.html

Tout fonctionne comme prévu, à l'exception de la création de certains fichiers journaux qui ne sont pas configurés dans mon fichier log4j.properties:

log4j.rootLogger=INFO, CATALINA

# Define all the appenders
log4j.appender.CATALINA=org.Apache.log4j.RollingFileAppender
log4j.appender.CATALINA.File=${catalina.base}/logs/catalina.log
log4j.appender.CATALINA.MaxFileSize=3MB
log4j.appender.CATALINA.MaxBackupIndex=10
log4j.appender.CATALINA.Append=true
log4j.appender.CATALINA.Encoding=UTF-8
log4j.appender.CATALINA.layout = org.Apache.log4j.PatternLayout
log4j.appender.CATALINA.layout.ConversionPattern = %d [%t] %-5p %c- %m%n

log4j.appender.LOCALHOST=org.Apache.log4j.RollingFileAppender
log4j.appender.LOCALHOST.File=${catalina.base}/logs/localhost.log
log4j.appender.LOCALHOST.MaxFileSize=3MB
log4j.appender.LOCALHOST.MaxBackupIndex=10
log4j.appender.LOCALHOST.Append=true
log4j.appender.LOCALHOST.Encoding=UTF-8
log4j.appender.LOCALHOST.layout = org.Apache.log4j.PatternLayout
log4j.appender.LOCALHOST.layout.ConversionPattern = %d [%t] %-5p %c- %m%n

log4j.appender.MANAGER=org.Apache.log4j.RollingFileAppender
log4j.appender.MANAGER.File=${catalina.base}/logs/manager.log
log4j.appender.MANAGER.MaxFileSize=3MB
log4j.appender.MANAGER.MaxBackupIndex=10
log4j.appender.MANAGER.Append=true
log4j.appender.MANAGER.Encoding=UTF-8
log4j.appender.MANAGER.layout = org.Apache.log4j.PatternLayout
log4j.appender.MANAGER.layout.ConversionPattern = %d [%t] %-5p %c- %m%n

log4j.appender.Host-MANAGER=org.Apache.log4j.RollingFileAppender
log4j.appender.Host-MANAGER.File=${catalina.base}/logs/Host-manager.log
log4j.appender.Host-MANAGER.MaxFileSize=3MB
log4j.appender.Host-MANAGER.MaxBackupIndex=10
log4j.appender.Host-MANAGER.Append=true
log4j.appender.Host-MANAGER.Encoding=UTF-8
log4j.appender.Host-MANAGER.layout = org.Apache.log4j.PatternLayout
log4j.appender.Host-MANAGER.layout.ConversionPattern = %d [%t] %-5p %c- %m%n

log4j.appender.CONSOLE=org.Apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Encoding=UTF-8
log4j.appender.CONSOLE.layout = org.Apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern = %d [%t] %-5p %c- %m%n

# Configure which loggers log to which appenders
log4j.logger.org.Apache.catalina.core.ContainerBase.[Catalina].[localhost]=INFO, LOCALHOST
log4j.logger.org.Apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager]=\
  INFO, MANAGER
log4j.logger.org.Apache.catalina.core.ContainerBase.[Catalina].[localhost].[/Host-manager]=\
  INFO, Host-MANAGER

Les fichiers créés alors qu’ils ne sont pas dans ma configuration sont: 

  • commons-daemon.yyyy-MM-jj.log
  • Tomcat7-stderr.yyyy-MM-jj.log
  • Tomcat7-stdout.yyyy-MM-jj.log

Comme vous le voyez, ils utilisent un appender de fichier roulant quotidien, ce qui n’est pas souhaitable, car j’ai besoin d’un système ne nécessitant pas d’entretien, je préférerais donc un rollingfileappender dont maxBackupIndex empêche la croissance illimitée des journaux.

Alors, où puis-je configurer les journaux stdout, stderr et commons-daemon? Existe-t-il une configuration quelque part ou puis-je remplacer la configuration par ma propre configuration log4j? THX

15
räph

Je prévois que nous aurons une exigence similaire/que nous aurons le même problème un peu plus tard dans l’avenir sur l’un de nos systèmes. Donc, j'étais désireux de trouver une solution/solution de rechange moi-même. 

Examinez d'abord le démon commons pour voir s'il existe une configuration que nous pouvons faire pour obtenir un maxbackupindex sur les journaux; mais la recherche n'a pas beaucoup aidé.

Cependant, j'ai trouvé deux approches que les gens prennent pour traiter avec "les limites de connexion des journaux de Tomcat".

Première approche: configurer en interne dans Tomcat

  1. Trouvez context.xml dans Tomcat dans le chemin: - 

    YourTomcatInstallDir\conf\context.xml  
    
  2. Modifiez la balise de contexte pour ajouter swallowOutput="true" comme ci-dessous: - 

    <Context swallowOutput="true">
    

    (Cela avale tout votre stdout/stderr et redirige vers votre système de journalisation sous-jacent.) 

  3. Dans votre log4j.properties; ajoutez config pour rediriger vos journaux org.Apache.catalina vers votre propre fichier journal. 

    Votre enregistreur ressemblera à ceci: - 

    log4j.logger.org.Apache.catalina=INFO, YourAppender
    

    (Sur YourAppender, vous pouvez maintenant définir MaxBackupIndex et MaxFileSize afin d’obtenir le nombre de survols défini et une limite de la taille du journal.) 

Si l'approche ci-dessus ne fonctionne pas; vous pouvez essayer d'utiliser un utilitaire externe comme mentionné dans la deuxième approche 

Deuxième approche: configuration externe avec "logrotate"

Un outil simple appelé logrotate est disponible pour obtenir l'effet souhaité sur les journaux que vous n'avez pas le contrôle. Voici quelques liens pour vous aider à démarrer. 

L'utilisation de cet outil est assez simple et une analyse rapide de ces liens devrait vous permettre d'obtenir ce dont vous avez besoin. 

17
Abhin

J'avais le même problème et je suis finalement tombé sur la solution. Tomcat 7 pour Windows possède une application de propriétés Tomcat appelée Monitor Tomcat. Dans l'onglet de journalisation, vous devez supprimer la valeur "auto" dans les zones de saisie redirect stdout et stderr. Laissez simplement ce champ vide et il ne créera pas ces fichiers. Ensuite, vous pouvez utiliser log4j pour créer des fichiers journaux de roulement pour ces fichiers critiques à des fins de débogage ultérieur.

J'espère que cela pourra aider.

13
msilveus

Sous Windows, vous devrez aller à Tomcat/bin/service.bat et éditer la variable PR_LOGPATH (toutes les variables) . Et probablement réinstaller le service par "service remove" et "service install". doit être très similaire

1
AlexK80

Désactiver la création de fichier via Apache "Commons Daemon Service Manager"

Version courte: Supprimez le texte auto dans l'application de service. Cela désactivera la création des fichiers stdout et stderr. Le fichier "commons-daemon" avec lequel vous êtes coincé, je pense.

Version longue voir ci-dessous.


Tomcat pour Windows a une petite application de service spéciale. Cette application porte plusieurs noms. Exemple: Commons Daemon Service Manager, procrun. Et le fichier EXE sera généralement appelé quelque chose comme Tomcat7w.exe/YourServiceNameHerew.exe/Tomcat9w.exe.

L'icône Windows est simplement étiquetée Monitor Tomcat. Et à partir de là, vous passerez directement à l'onglet Logging.

 "Monitor Tomcat" icon

Voici une capture d'écran de l'onglet "Journalisation". Cette application peut générer plusieurs fichiers:

  1. Le fichier journal commons-daemon.
  2. Le Pid file. Nous ne nous soucions pas de ça maintenant.
  3. Le fichier journal Redirect Stdout.
  4. Le fichier journal Redirect Stderror.

 "Logging" tab of procrun app

Donc, il y a 3 fichiers de log. NONE de ceux-ci sont tournés par défaut. ProcRun n'offre PAS d'installations pour cela. 

Donc, plusieurs solutions de contournement me viennent à l’esprit:

  1. Désactivez la création de fichiers stdout/stderr (voir ci-dessous). Vous aurez ENCORE besoin d'un moyen de nettoyer les anciens fichiers "commons-daemon". (Je ne connais aucun moyen de désactiver la création de ces fichiers. Vider le champ de texte ne fera pas l'affaire.) Mais au moins, ceux-ci devraient être de petite taille.
  2. Redémarrez périodiquement le service Tomcat. Cela créera un fichier horodaté avec la date du jour. Vous aurez ENCORE besoin d'un moyen de nettoyer les anciens fichiers commons-daemon/stdout/stderr.
  3. Utilisez un utilitaire externe Logrotate-for-Windows pour faire pivoter le fichier actuel et nettoyer les anciens fichiers pivotés.
  4. N'utilisez pas ProcRun et démarrez votre Windows Tomcat d'une autre manière. Cela ne créera aucun des fichiers commons-daemon/stdout/stderr.

Je pense que la position officielle peut en gros se résumer comme suit: "Quoi? Vos fichiers catalina/stdout/stderr deviennent trop volumineux? Eh bien, vous ne devriez pas vous connecter à ceux de toute façon." En d’autres termes: la seule option officiellement prise en charge semble être le numéro 1 (et 4).

Désactivation de la création de stdout/stderr

Dans mes Tomcats, le fichier "commons-daemon" est généralement très petit et ne reçoit que quelques nouvelles lignes lorsque Tomcat est démarré ou arrêté. Même à Level: Debug.

Les fichiers stdout et stderr redirigés peuvent devenir TRÈS volumineux.

Vous pouvez toutefois supprimer le texte auto des champs de texte. Cela devrait complètement désactiver la génération de ces fichiers.

Lectures complémentaires

1
StackzOfZtuff