【问题标题】:Docker Tomcat logging to catalina.out and to consoleDocker Tomcat 记录到 catalina.out 和控制台
【发布时间】:2021-05-21 01:16:48
【问题描述】:

Docker tomcat 容器将 tomcat 应用程序的启动日志保存在 catalina.out 文件中(最后一行是INFO: Server startup in 136607 ms)。但 tomcat 应用程序的其余活动已登录到控制台,可以使用docker logs container_id 查看。

有没有办法同时记录到文件和控制台?我需要在 tomcat 容器中的 catalina.out.2021.log 中的活动日志,这样我就可以运行一个脚本来收集分析日志并处理它并发送电子邮件,它需要在容器内运行。

Tomcat 使用自定义日志记录属性文件 /usr/local/tomcat/conf/logging.properties 启动,但输出最终出现在控制台而不是文件中。

【问题讨论】:

  • 你使用的是哪个 docker 镜像?
  • docker.io/hobsonspipe/centos-tomcat7:latest 这就是我正在使用的图像
  • 也在 kubernetes 集群中。

标签: docker tomcat


【解决方案1】:

在您使用的图像 (hobsonspipe/centos-tomcat7:latest) 中,服务器启动时:

-Djava.util.logging.config.file=/etc/tomcat/logging.properties

因此,您需要修改/etc/tomcat/logging.properties 文件,而不是您问题中使用的文件。这个文件已经做了你想做的事:它将所有 Tomcat 日志发送到标准输出和/var/log/catalina.<date>.log,除了来自应用程序的日志消息(如果它们使用SevletContext#log 方法),它们会发送到/var/log/localhost.<date>.log

如果您的应用程序既不使用ServletContext#log 也不使用java.util.logging,则必须在别处配置特定的日志记录框架。

【讨论】:

  • 知道我需要修改或添加什么吗?
  • 我已经尝试过 log4j 配置,但它被 tomcat 图像忽略了
  • @John:我在答案中添加了一些有关日志记录配置的详细信息。
猜你喜欢
  • 1970-01-01
  • 2012-01-13
  • 2012-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-01
  • 1970-01-01
  • 2020-11-16
相关资源
最近更新 更多