web-dev-qa-db-fra.com

Comment enregistrer la sortie stdout dans Tomcat?

Existe-t-il un moyen de consigner toutes les sorties stdout dans le fichier catalina.log dans Tomcat? (c'est-à-dire tout ce qui est imprimé avec System.out.println())

La fenêtre de la console qui s'ouvre lorsque vous exécutez Tomcat/bin/startup.bat affiche la sortie de stdout, mais elle n'est pas enregistrée dans Tomcat/logs/catalina.<date>.log.

Mon problème spécifique est que j'ai un appender de console défini dans log4j pour sortir vers la console. Ces messages de journal apparaissent correctement dans la fenêtre de la console Tomcat, mais ils ne sont pas écrits dans catalina.log. J'exécute Tomcat 5.5 sur Windows. Merci.

MODIFIER:

Voici mon fichier log4j.properties. Il est situé à Tomcat/webapps/app/WEB-INF/classes/log4j.properties:

log4j.rootCategory=DEBUG, console
log4j.appender.console=org.Apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.Apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=[%d{ABSOLUTE} %-5p %c{1}]: %m%n
18
Michael

J'ai déjà rencontré des questions similaires auparavant et je n'ai pas trouvé le moyen de le faire en enregistrant System.out sous Windows sauf si vous exécutez Tomcat en tant que service Windows . Cela semble fonctionner par défaut sous Unix puisque startup.sh pointe sur catalina.sh qui enregistre la sortie standard dans le fichier catalina.out comme ci-dessous.

org.Apache.catalina.startup.Bootstrap "$@" start >> "$CATALINA_BASE"/logs/catalina.out 2>&1 &

Dans log4j, ConsoleAppender seul ne s'ajoute pas à un fichier, uniquement à System.out

Cependant, j'ai modifié vos propriétés log4j pour ajouter un FileAppender et cette configuration fonctionne, mais bien sûr, cela se connecte dans un fichier journal séparé.

Nouvelle config

# Set root logger level to DEBUG.
log4j.rootLogger=DEBUG, console, myFile

log4j.appender.console=org.Apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.Apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=[%d{ABSOLUTE} %-5p %c{1}]: %m%n




# myFile writes to file
log4j.appender.myFile=org.Apache.log4j.RollingFileAppender
log4j.appender.myFile.File=logs/tomcatlog4j.log
log4j.appender.myFile.MaxFileSize=100KB
log4j.appender.myFile.layout=org.Apache.log4j.PatternLayout
log4j.appender.myFile.layout.ConversionPattern==[%d{ABSOLUTE} %-5p %c{1}]: %m%n

Sortie 

= [15: 24: 03 819 INFO A1]: Dans my.jsp = [15: 24: 03,975 INFO A1]: Sur mon.jsp = [15: 24: 04 880 INFO A1]: Dans my.jsp = [15: 24: 04 880 INFO A1]: sur my.jsp

regarde aussi

Comment consigner les exceptions d'un paquet spécifique déployé dans Tomcat

enregistre les événements sélectionnés dans un fichier séparé

https://serverfault.com/questions/201178/Tomcat-5-5-how-to-redirect-the-logging-output-to-one-file-per-web-application

10
JoseK

Avez-vous vérifié si le fichier log4j.properties est disponible dans votre application? Vous pouvez peut-être vérifier en définissant un chemin de fichier codé en dur, comme

-Dlog4j.configuration = fichier: /// C:\Dev\log4j.properties

Si les journaux sont écrits après ces modifications, le chemin d'accès relatif au fichier log4j est incorrect.

1
Markus Lausberg

Si je regarde la configuration de journalisation par défaut de Tomcat 5.5 dans logging.properties:

org.Apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO
org.Apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.Apache.juli.FileHandler

Cela me donne l’impression que la stdout des applications Web pourrait être consignée dans les fichiers uniquement pour le niveau INFO et les niveaux supérieurs, regading that http://Tomcat.Apache.org/Tomcat-5.5-doc/logging.html indique que, dans Tomcat, les enregistreurs de configuration de journalisation JULI n'utilisent pas les gestionnaires des parents lorsqu'ils se voient affecter leurs propres gestionnaires. De plus, le fichier doit porter le préfixe localhost et non pas catalina. Mais alors je ne comprends pas comment la sortie arrive dans votre fenêtre de sortie: /

0
Gandalf