2011-10-12 50 views
16

すべてのstdout出力をTomcatのcatalina.logファイルに記録する方法はありますか? (すなわち、System.out.println()に印刷されるすべて)Tomcatで標準出力を記録するには?

TOMCAT/bin/startup.batを実行すると開くコンソールウィンドウは、stdoutの出力を表示しますが、TOMCAT/logs/catalina.<date>.logには保存されません。

私の特定の問題は、コンソールに出力するためにlog4jで定義されたコンソールアペンダーがあることです。これらのログメッセージは、Tomcatコンソールウィンドウに正しく表示されますが、catalina.logには書き込まれません。私はWindows上でTomcat 5.5を実行しています。ありがとう。

EDIT:

は、ここに私のlog4j.propertiesファイルです。それはTOMCAT/webapps/app/WEB-INF/classes/log4j.properties次の場所にあります。あなたは、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 
+0

見るログインしていますか? – Gandalf

+0

@ガンダル私は知らない。私はそれをサービスとして実行したくありません。 – Michael

+0

コンソールアペンダーでlog4jをどこで設定しましたか? Webアプリケーションごと、またはTomcat自体に? – Gandalf

答えて

1

確認しましたか? はたぶん、あなたは

-Dlog4j.configuration =ファイルのようにハードコードさファイルパスを設定することにより、確認することができます:/// C:\ Devの\のlog4j.propertiesログがこれらの後に書かれている場合は

変更すると、log4jファイルへの相対パスが間違っています。

+0

これはクラスパスのルートにあります。それは 'TOMCAT/webapps/app/WEB-INF/classes/log4j.properties'にあります。 – Michael

0

私は、logging.properties内のTomcat 5.5のデフォルトのロギング設定を見れば:Webアプリケーションの標準出力にのみ上記レベルINFOのためにとファイルに記録される可能性があるかのようにregading、私には見えます

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ロギング設定ロガーは、自分自身のハンドラが割り当てられているときに親のハンドラを使用しないことを述べています。また、ファイルはlocalhostの接頭辞で、catalinaではなく接頭語にする必要があります。しかし、出力がどのように出力ウィンドウに表示されるのか分かりません。/

+0

ありがとうございます。私はこれらのレベルを "INFO"から "DEBUG"に変更しようとしましたが、stdoutの出力はログファイル(catalina、localhost、manager、またはhost-manager)のいずれにも表示されません。私はそのリンクをより詳細に読む必要があります。 – Michael

10

WindowsでSystem.outをログに記録することでこれまで同様の質問がありました。unless you are running Tomcat as a Windows service log4jので

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

以下のようなcatalina.out stdoutをファイルに記録しますcatalina.shからstartup.shポイントは、それ自体でConsoleAppenderは、しかし唯一System.out

に、ファイルに追加されませんので、これは、Unixではデフォルトで動作しているようです私はあなたのlog4jプロパティを変更してFileAppenderを追加しましたが、この設定は機能しますが、もちろんこれは別のログファイルに記録されます。

新設定

# 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 

出力

= [15:24:03819 INFO A1]:[:24:03975 INFO A1 15]:my.jsp = Inのうち、私の.jsp = [15:24:04,880情報A1]:my.jspで = [15:24:04,880情報A1]:私のうち。JSP

また、あなたが代わりに起動バットを使用してのWindowsサービスとして起動したときに、catalina.logようにTomcatを

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

LinuxでConsoleAppenderがcatalina.outに書き込むと言っていますが、WindowsではTomcatがサービスとして実行されていなければそれはありませんか? – Michael

+0

@Michael:Linux上でConsoleAppender **がcatalina.outに書き込むことを確認できます。私はこれをテストしました。 – JoseK

+0

ありがとう、ちょうど私があなたが何を言っているのか理解していることを確認したかった。だから私の質問への答えは、 "いいえ、ConsoleAppenderは、Tomcatがサービスとして実行されている場合、Windows上のcatalina.logに書き込むだけです" – Michael

関連する問題