it-swarm.com.de

Wie protokolliert man die Ausgabe von stdout in Tomcat?

Gibt es eine Möglichkeit, alle stdout-Ausgaben in der Datei catalina.log in Tomcat zu protokollieren? (d. h. alles, was an System.out.println() gedruckt wird)

Das Konsolenfenster, das beim Ausführen von Tomcat/bin/startup.bat geöffnet wird, zeigt die Ausgabe von stdout an, wird jedoch nicht in Tomcat/logs/catalina.<date>.log gespeichert.

Mein spezielles Problem ist, dass ich einen in log4j definierten Konsolen-Appender zur Ausgabe an die Konsole definiert habe. Diese Protokollnachrichten werden im Tomcat-Konsolenfenster korrekt angezeigt, jedoch nicht in catalina.log geschrieben. Ich verwende Tomcat 5.5 unter Windows. Vielen Dank.

BEARBEITEN:

Hier ist meine log4j.properties-Datei. Es befindet sich bei 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

Ich bin bereits auf ähnliche Fragen gestoßen und habe durch das Protokollieren von System.out in Windows keinen Weg gefunden, es sei denn, Sie führen Tomcat als Windows-Dienst aus. Dies scheint standardmäßig in Unix zu funktionieren, da startup.sh auf catalina.sh zeigt, der stdout wie unten in der catalina.out-Datei protokolliert

org.Apache.catalina.startup.Bootstrap "[email protected]" start >> "$CATALINA_BASE"/logs/catalina.out 2>&1 &

In log4j hängt ConsoleAppender nicht an eine Datei, sondern nur an System.out.

Ich habe jedoch Ihre log4j-Eigenschaften geändert, um einen FileAppender hinzuzufügen, und diese Konfiguration funktioniert, aber dies wird natürlich in einer separaten Protokolldatei protokolliert.

Neue Konfig

# 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

Ausgabe 

= [15: 24: 03,819 INFO A1]: In my.jsp = [15: 24: 03,975 INFO A1]: Aus my.jsp = [15: 24: 04,880 INFO A1]: In my.jsp = [15: 24: 04,880 INFO A1]: Aus my.jsp

siehe auch

So protokollieren Sie Ausnahmen von einem bestimmten in Tomcat bereitgestellten Paket

log select-Ereignisse in einer separaten Datei

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

10
JoseK

Haben Sie überprüft, ob die Datei log4j.properties in Ihrer Anwendung gefunden werden kann? Vielleicht können Sie dies überprüfen, indem Sie einen fest codierten Dateipfad wie

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

Wenn die Protokolle nach diesen Änderungen geschrieben werden, ist der relative Pfad zur log4j-Datei falsch.

1
Markus Lausberg

Wenn ich mir die Standardprotokollierungskonfiguration von Tomcat 5.5 in "logging.properties" ansehe:

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

Das scheint mir, als könnten stdout von Webanwendungen nur für Level INFO und höher in Dateien protokolliert werden, wobei http://Tomcat.Apache.org/Tomcat-5.5-doc/logging.html dies in angibt Konfigurationsprotokolle für die Tomcat JULI-Protokollierung verwenden keine Handler der übergeordneten Benutzer, wenn ihnen eigene Handler zugewiesen werden. Der Datei sollte auch localhost und nicht catalina vorangestellt werden. Aber ich verstehe nicht, wie die Ausgabe in Ihr Ausgabefenster gelangt: /

0
Gandalf