web-dev-qa-db-ja.com

Tomcatでstdout出力を記録する方法は?

Tomcatのcatalina.logファイルにすべてのstdout出力を記録する方法はありますか? (つまり、System.out.println()に出力されるすべてのもの)

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

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

編集:

ここに私のlog4j.propertiesファイルがあります。 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
19
Michael

以前にも同様の質問に遭遇しましたが、WindowsでSystem.outをログに記録することでこれを行う方法は見つかりませんでした WindowsサービスとしてTomcatを実行している場合を除きstartup.shは以下のようなcatalina.shファイルにstdoutを記録するcatalina.outを指すので、これはデフォルトでUnixで動作するようです

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

Log4jでは、ConsoleAppender自体はファイルに追加されず、System.outのみに追加されます

ただし、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:03,819 INFO A1]:my.jsp内= [15:24:03,975 INFO A1]:out of my.jsp = [15:24:04,880 INFO A1]:In my.jsp = [15: 24:04,880情報A1]:my.jspから

また見なさい

Tomcatにデプロイされた特定のパッケージからの例外を記録する方法

選択イベントを別のファイルに記録する

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

10
JoseK

Log4j.propertiesファイルがアプリケーションから見つかるかどうかを確認しましたか?たぶん、次のようなハードコードされたファイルパスを設定することで確認できます

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

これらの変更後にログが書き込まれる場合、log4jファイルへの相対パスが間違っています。

1
Markus Lausberg

Logging.propertiesでTomcat 5.5のデフォルトのロギング設定を見ると:

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

これは、Webアプリケーションの標準出力がレベルINFO以上のファイルにのみログに記録されるように見えます http://Tomcat.Apache.org/Tomcat-5.5-doc/logging .html は、Tomcatでは、JULIロギング設定ロガーが独自のハンドラーを割り当てられている場合、親のハンドラーを使用しないと述べています。また、ファイルにはlocalhostではなくcatalinaのプレフィックスを付ける必要があります。しかし、その後、出力がどのように出力ウィンドウに来るのかわかりません:/

0
Gandalf