如何配置 tomcat 5.5(或 6.0),使每个 Web 应用程序/上下文的 stdout 和 stderr 输出转到一个日志文件?
我仅设法将 stderr 发送到特定的日志文件 - 应用程序的标准输出仍然发送到 catalina.out。
答案1
我找到了以下信息,想必这对您有所帮助。
尝试这个,
- 每个应用程序必须使用自己的 log4j。您可以通过
log4j.jar
在WEB-INF/lib
每个应用程序的 中放置 来实现这一点。 - 在每个 log4j 的配置文件中(默认位置是
WEB-INF/classes
),指定日志文件名,例如log4j.appender.AppLog.File=${catalina.home}/logs/app1.log
。 - 为每个上下文添加
swallowOutput="true"
,这样 stdout、stderr 将转到您自己的日志。
我们在 Tomcat 5.5 上执行此操作,但我认为它也可以在 6.0 上运行。
编辑:这是我们的META-INF/context.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<Context override="true" swallowOutput="true" useNaming="false">
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<Manager pathname=""/>
</Context>
进一步阅读:
答案2
stdout 指向catalina.sh
脚本中的 catalina.out,这适用于整个 Tomcat 服务器。
"$CATALINA_BASE"/logs/catalina.out 2>&1 &
我知道这不是一个完整的答案——只是告诉你去哪里找。
答案3
分离输出的另一种方法是为每个 webapp 运行一个 tomcat 实例。这样,您不仅可以分离 webapp 日志,还可以分离其他日志文件、JVM 参数、实例的启动和停止等。
您将找到分步指南这里。