如何为 tomcat 上部署的每个 WAR 配置不同的 catalina.out 日志

tom*_*189 4 tomcat logging

我有一个运行的 tomcat 8.5 实例,部署了多个 WAR,每个 WAR 都通过System.out控制台写入其内部输出。

现在,tomcat 将所有这些日志输出合并到一个文件中:catalina.out,但我想将它们分开。是否可以配置 tomcat 的日志记录属性以在每个 WAR 基础上创建不同的 catalina.outs,例如

  • app1.war -> catalina-app1.out 的控制台输出
  • app2.war -> catalina-app2.out 的控制台输出

...

谢谢汤姆

tom*_*189 5

将“swallowOutput”放入 context.xml 中

<Context swallowOutput="true">
...
</Context>
Run Code Online (Sandbox Code Playgroud)

并将单独的logging.properties文件添加到每个webapps/wars的位置

/WEB-INF/classes/logging.properties
Run Code Online (Sandbox Code Playgroud)

如果您的 WAR 是由 eclipse 生成的,您也可以将此文件放入源文件夹中

/src/logging.properties
Run Code Online (Sandbox Code Playgroud)

logging.properties 可能有以下内容

  handlers = org.apache.juli.FileHandler, java.util.logging.ConsoleHandler

############################################################
# Handler specific properties.
# Describes specific configuration info for Handlers.
############################################################

org.apache.juli.FileHandler.level = FINE
org.apache.juli.FileHandler.directory = ${catalina.base}/logs
org.apache.juli.FileHandler.prefix = webapp_name.

java.util.logging.ConsoleHandler.level = FINE

java.util.logging.ConsoleHandler.formatter = java.util.logging.OneLineFormatter
Run Code Online (Sandbox Code Playgroud)

您可以使用以下命令为每个单独的 Web 应用程序日志定义名称前缀org.apache.juli.FileHandler.prefix