java - 如何在 Tomcat 中记录标准输出?

标签 java tomcat log4j

有没有办法将所有标准输出记录到 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

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

关于java - 如何在 Tomcat 中记录标准输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7740257/

相关文章:

java - Spring 安全: get password in UserDetailsServiceMethod

tomcat - 从 Jenkins 1.3.x 更新到 Jenkins 1.44 后,找不到工作了

java - 永久关闭 log4j

java - 在 log4j2.properties 中设置翻转策略

tomcat - Struts2 约定插件在 Tomcat 8.x 上损坏 - org.apache.struts2.convention.PackageBasedActionConfigBuilder.error 无法扫描命名包

tomcat - 为在 tomcat 中运行的 grails 应用程序动态重新加载 log4j.properties

java - 如何顺序地为同一类型的事实编写规则?

java - 在 JFrame 中保存复选框

java - UTF-8、属性文件和 Java/Alfresco

java - 空指针异常 jnlp.FileSaveService