有没有办法将所有标准输出记录到 Tomcat 中的 catalina.log 文件中? (即打印到 System.out.println()
的所有内容)
运行 TOMCAT/bin/startup.bat
时打开的控制台窗口显示标准输出的输出,但未保存到 TOMCAT/logs/catalina.<date>.log
.
我的具体问题是我在 log4j 中定义了一个控制台附加程序来输出到控制台。这些日志消息正确显示在 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
最佳答案
我之前也遇到过类似的问题,但没有找到通过在 Windows unless you are running Tomcat as a Windows service 中记录 System.out 来解决此问题的方法.这似乎在 Unix 中默认工作,因为 startup.sh
指向 catalina.sh
它将标准输出记录到 catalina.out
文件,如下所示
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]: In 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 INFO A1]: Out of my.jsp
另见
How to log exceptions from a specific package deployed in tomcat
关于java - 如何在 Tomcat 中记录标准输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7740257/