【发布时间】:2021-08-07 02:50:39
【问题描述】:
我有一个在 tomcat 服务器上运行的旧服务。我不想碰这个服务(我不确定我会怎么做),但我知道这个服务会在 tomcat 服务器控制台(当我们运行 startup.bat 时出现的控制台)上打印很多日志。我认为这些日志导致服务变慢,我想以某种方式配置 tomcat 服务器,以便在 tomcat 服务器上运行的 webapps 不会在控制台上打印任何日志。如果可能的话,我不想改变服务。任何帮助表示赞赏。
【问题讨论】:
我有一个在 tomcat 服务器上运行的旧服务。我不想碰这个服务(我不确定我会怎么做),但我知道这个服务会在 tomcat 服务器控制台(当我们运行 startup.bat 时出现的控制台)上打印很多日志。我认为这些日志导致服务变慢,我想以某种方式配置 tomcat 服务器,以便在 tomcat 服务器上运行的 webapps 不会在控制台上打印任何日志。如果可能的话,我不想改变服务。任何帮助表示赞赏。
【问题讨论】:
完全关闭日志记录通常是个坏主意。这篇文章中有一些指导:How to stop Tomcat logging?
您还可以尝试降低日志记录详细级别以过滤掉除 SEVERE 之外的所有日志,这样如果以后确实发生了不好的事情,至少 SEVERE 消息可能会帮助您指出正确的方向。如果您想尝试调整日志详细级别,http://tomcat.apache.org 上的 Tomcat 文档会很有帮助。
【讨论】:
可以在 [conf/logging.properties] (https://github.com/apache/tomcat/blob/master/conf/logging.properties) 文件中通过删除 java.util.logging.ConsoleHandler 处理程序来配置 Tomcat 服务器的日志记录。修改行:
.handlers = 1catalina.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler
到
.handlers = 1catalina.org.apache.juli.AsyncFileHandler
这实际上是生产服务器的一个好习惯:
Apache Tomcat 中的默认日志记录配置将相同的消息写入控制台和日志文件。这在使用 Tomcat 进行开发时非常有用,但在生产中通常不需要。
但是,Tomcat 服务器本身的日志消息并不是很冗长。写入标准输出/错误的数据量可能是由于:
System.out/System.err,而不是适当的记录框架。在 Tomcat 中,您可以将这些消息重定向到正确的日志文件,将上下文的 swallowOutput 属性设置为 true(请参阅 this question),【讨论】: