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

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

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

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

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

...

谢谢汤姆

答案1

在你的 context.xml 中放入“swallowOutput”

<Context swallowOutput="true">
...
</Context>

并在每个 webapps/wars 的以下位置添加一个单独的logging.properties文件

/WEB-INF/classes/logging.properties

如果你的 WAR 是由 eclipse 生成的,你也可以把这个文件放在源文件夹中

/src/logging.properties

logs.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

并且你可以为每个单独的 webapp 日志定义名称前缀org.apache.juli.FileHandler.prefix

答案2

WEB-INF/classes如果在类似的文件中添加 app1 和 app2 log4j.properties,并在其中输入类似以下内容:

log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.logfile.DatePattern='.'dd-MM-yyyy
log4j.appender.logfile.File=${catalina.base}/logs/app1.log

(更改第二个应用程序的文件名)

您将获得文件app1.logapp2.log特定应用程序的 tomcat 输出

相关内容