Tomcat 5.5:如何将日志输出重定向到每个 Web 应用程序的一个文件

Tomcat 5.5:如何将日志输出重定向到每个 Web 应用程序的一个文件

如何配置 tomcat 5.5(或 6.0),使每个 Web 应用程序/上下文的 stdout 和 stderr 输出转到一个日志文件?

我仅设法将 stderr 发送到特定的日志文件 - 应用程序的标准输出仍然发送到 catalina.out。

答案1

我找到了以下信息,想必这对您有所帮助。

尝试这个,

  1. 每个应用程序必须使用自己的 log4j。您可以通过log4j.jarWEB-INF/lib每个应用程序的 中放置 来实现这一点。
  2. 在每个 log4j 的配置文件中(默认位置是WEB-INF/classes),指定日志文件名,例如log4j.appender.AppLog.File=${catalina.home}/logs/app1.log
  3. 为每个上下文添加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 参数、实例的启动和停止等。

您将找到分步指南这里

相关内容