如何在Tomcat中记录stdout输出?

Mic*_*ael 20 java tomcat log4j

有没有办法将所有stdout输出记录到Tomcat中的catalina.log文件?(即所有打印到的System.out.println())

运行时打开的控制台窗口TOMCAT/bin/startup.bat显示stdout的输出,但它没有保存到TOMCAT/logs/catalina.<date>.log.

我的具体问题是我在log4j中定义了一个控制台appender以输出到控制台.这些日志消息在Tomcat控制台窗口中正确显示,但它们不会写入catalina.log.我在Windows上运行Tomcat 5.5.谢谢.

编辑:

这是我的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
Run Code Online (Sandbox Code Playgroud)

Jos*_*seK 10

我之前遇到过类似的问题,除非您将Tomcat作为Windows服务运行,否则在Windows中记录System.out并没有找到办法.这似乎在默认情况下在UNIX环境中工作,因为startup.sh点到catalina.sh哪些日志标准输出到catalina.out文件中像下面

org.apache.catalina.startup.Bootstrap "$@" start >> "$CATALINA_BASE"/logs/catalina.out 2>&1 &
Run Code Online (Sandbox Code Playgroud)

在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
Run Code Online (Sandbox Code Playgroud)

产量

= [15:24:03,819 INFO A1]:在my.jsp中= [15:24:03,975 INFO A1]:出于my.jsp = [15:24:04,880 INFO A1]:在my.jsp = [15: 24:04,880 INFO A1]:出自my.jsp

也看到了

如何从tomcat中部署的特定包中记录异常

将选择事件记录到单独的文件中

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


Mar*_*erg 1

您是否检查过,是否可以从您的应用程序中找到 log4j.properties 文件?也许您可以通过设置硬编码文件路径来检查,例如

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

如果在这些更改之后写入日志,则 log4j 文件的相对路径是错误的。