首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Tomcat中记录stdout输出?

如何在Tomcat中记录stdout输出?
EN

Stack Overflow用户
提问于 2011-10-12 20:44:33
回答 3查看 77.1K关注 0票数 20

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

运行TOMCAT/bin/startup.bat时打开的控制台窗口显示来自标准输出的输出,但不会保存到TOMCAT/logs/catalina.<date>.log

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

编辑:

这是我的log4j.properties文件。它位于TOMCAT/webapps/app/WEB-INF/classes/log4j.properties

代码语言:javascript
复制
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
EN

回答 3

Stack Overflow用户

发布于 2011-10-13 17:57:56

我以前遇到过类似的问题,但还没有找到一种通过在Windows unless you are running Tomcat as a Windows service中记录System.out来做到这一点的方法。这似乎在Unix中默认有效,因为startup.sh指向catalina.sh,它将标准输出记录到catalina.out文件中,如下所示

代码语言:javascript
复制
org.apache.catalina.startup.Bootstrap "$@" start >> "$CATALINA_BASE"/logs/catalina.out 2>&1 &

在log4j中,ConsoleAppender本身不会附加到文件,只能附加到System.out

但是,我已经修改了您的log4j属性以添加一个FileAppender,并且此配置可以正常工作,但当然这会记录到一个单独的日志文件中。

新配置

代码语言:javascript
复制
# 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信息A1: In my.jsp =15:24:03,975信息A1: Out of my.jsp =15:24:04,880信息A1: In my.jsp =15:24:04,880信息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

票数 11
EN

Stack Overflow用户

发布于 2011-10-12 21:45:44

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

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

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

票数 1
EN

Stack Overflow用户

发布于 2011-10-12 22:51:58

如果我在logging.properties中查看Tomcat5.5的默认日志记录配置:

代码语言:javascript
复制
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.FileHandler

在我看来,似乎web应用程序的标准输出可能只被记录到级别信息和更高级别的文件中,http://tomcat.apache.org/tomcat-5.5-doc/logging.html声明在tomcat JULI日志记录配置中,当记录器被分配到自己的处理程序时,不使用父级的处理程序。另外,文件的前缀应该是localhost,而不是catalina。但是我不明白输出是如何出现在你的输出窗口中的:/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7740257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档