2011-10-12 9 views
16

Tüm stdout çıktısını Tomcat'daki catalina.log dosyasına kaydetmenin bir yolu var mı? (Yani System.out.println() için baskılı alır herşey)Tomcat'de stdout çıktısı nasıl kaydedilir?

Eğer Stdout'a gelen TOMCAT/bin/startup.bat görüntüler çıktı çalıştırdığınızda açılan konsol penceresi, ancak TOMCAT/logs/catalina.<date>.log kaydedilir değil.

Benim özel sorunum, konsol için çıkış yapmak için log4j'de tanımlanan bir konsol ekleyiciye sahip olduğumdur. Bu günlük mesajları Tomcat konsol penceresinde doğru görünür, ancak catalina.log dosyasına yazılmaz. Windows'da Tomcat 5.5'i çalıştırıyorum. Teşekkürler.

DÜZENLEME:

İşte benim log4j.properties dosyasıdır. TOMCAT/webapps/app/WEB-INF/classes/log4j.properties bulunmaktadır:

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 
+0

erkek kedi yerine başlangıç ​​yarasa kullanarak bir windows hizmeti olarak başlattığınızda, catalina.log için giriş mu? – Gandalf

+0

@Gandalf Bilmiyorum. Bunu bir hizmet olarak çalıştırmak istemiyorum. – Michael

+0

Konsol ekleyicisiyle yapılandırılmış log4j'niz nerede var? Web uygulaması veya tomcat başına mı? – Gandalf

cevap

1

log4j.properties dosya uygulamadan bulunabilir olup olmadığını, kontrol mü? Belki

-Dlog4j.configuration = dosyası gibi bir kodlanmış dosya yolunu ayarlayarak, kontrol edebilirsiniz: /// C: \ Dev \ log4j.properties günlükleri bu sonra yazılır ise

değiştir, log4j dosyasının relativ yolu yanlış.

+0

Sınıf yolumun kökünde. Yani şu adreste bulunur: 'TOMCAT/webapps/app/WEB-INF/classes/log4j.properties'. – Michael

0

Ben logging.properties içinde erkek kedi 5.5 varsayılan günlüğü yapılandırma bakarsak: web uygulamaları stdout'unu yalnızca yukarıda seviye INFO için ve dosyalara kaydedilebilir olabilir sanki regading, bana bakar

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

http://tomcat.apache.org/tomcat-5.5-doc/logging.html, tomcat JULI kayıt yapılandırma günlükleyicilerinin, kendi işleyicileri atandıklarında ebeveynin işleyicilerini kullanmadığını belirtir. Ayrıca, dosya localhost öneki ve catalina değil. Ama sonra çıktının çıkış penceresine nasıl geldiğini anlamıyorum:/

+0

Teşekkürler. Tüm bu seviyeleri "INFO" dan "DEBUG" 'a değiştirmeyi denedim, ancak stdout çıktısının hiçbiri günlük dosyalarının hiçbirinde (catalina, localhost, manager veya host-manager) görünmüyordu. Bu linki daha detaylı okumalıyım. – Michael

10

Daha önce benzer sorulara rastladım ve Windows unless you are running Tomcat as a Windows service'da System.out oturumunu açarak bunu yapmanın bir yolunu bulamadım. Bu Ancak sadece System.out

için tek başına ConsoleAppender Dosyaya eklenecek gelmez log4j olarak

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

aşağıdaki gibi catalina.out dosyaya stdout günlükleri catalina.sh e startup.sh puan beri Unix varsayılan olarak iş gibi görünüyor Ben bir FileAppender eklemek için log4j özelliklerini değiştirdim ve bu yapılandırma çalışır, ama tabii ki bu ayrı bir günlük dosyasına kaydeder.

Yeni yapılandırma

# 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 

Çıktı

= [15: 24: 03.819 BİLGİ A1]: [: 24: 03.975 BİLGİ A1 15]: my.jsp = In Out benim .jsp = [15: 24: 04,880 INFO A1]: my.jsp = [15: 24: 04,880 INFO A1]: Out of my.jsp

ayrıca bkz

How to log exceptions from a specific package deployed in tomcat

log select events into a separate file

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

+0

Yani, Linux'ta bir ConsoleAppender'ın catalina.out'a yazacağını söylüyorsunuz, ancak Tomcat bir hizmet olarak çalıştırılmadığı sürece Windows'da çalışmıyor mu? – Michael

+0

@Michael: ConsoleAppender ** 'ın Linux'ta "catalina.out" yazdığını doğrulayabilirim. Bunu test ettim. – JoseK

+0

Tamam, teşekkürler, sadece nerede söylediğinizi anladığımdan emin olmak istedim. Öyleyse bu soruya cevabım geliyor, "Hayır, ConsoleAppender, Tomcat bir hizmet olarak çalıştırılırsa sadece Windows'ta catalina.log'a yazacaktır." – Michael