java - Spring 启动 : How to disable Tomcat startup logging?

标签 java spring-boot tomcat logging

我正在使用 Spring Boot 2.0.x 和 Logback。在启动我的应用程序(使用嵌入式 tomcat)时,我看到几条 INFORMATION 日志消息(写入标准错误),这些消息显然直接来自嵌入式 tomcat。

与我所有日志记录的其余部分相比,这些消息似乎不是由 Logback 编写的。消息具有以下内容:

Jan 08, 2019 3:13:00 PM org.apache.coyote.AbstractProtocol init
INFORMATION: Initializing ProtocolHandler ["http-nio-8080"]
Jan 08, 2019 3:13:00 PM org.apache.catalina.core.StandardService startInternal
INFORMATION: Starting service [Tomcat]
Jan 08, 2019 3:13:00 PM org.apache.catalina.core.StandardEngine startInternal
INFORMATION: Starting Servlet Engine: Apache Tomcat/8.5.34
Jan 08, 2019 3:13:01 PM org.apache.catalina.core.ApplicationContext log
INFORMATION: Initializing Spring embedded WebApplicationContext

我对这些都不感兴趣,这只是噪音。我如何摆脱这些日志?我尝试了各种解决方案,但到目前为止没有任何效果。

最佳答案

好吧,我花了大约 5 个小时才弄明白:

  • Tomcat 使用 JULI,它是 java.util.logging
  • 的衍生物
  • JULI 本身兼容java.util.logging,所以你可以用同样的方式配置它
  • 启动时,嵌入式 tomcat 不会关心您的任何日志记录设置(至少对我而言不是)

结果是:在我启动我的 spring-embedded tomcat 之前,我必须这样做:

java.util.logging.Logger.getLogger("org.apache").setLevel(java.util.logging.Level.WARNING);

这将指示 java.util.logging(由 JULI 实现)仅将警告传播到控制台。这消除了 tomcat 的所有启动噪音,并且所有其他日志记录都将由您选择的日志记录框架执行(在我的例子中是 logback),因此这根本不会影响您的标准日志记录。

关于java - Spring 启动 : How to disable Tomcat startup logging?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54093732/

相关文章:

java - 循环并保持计数

Java转换整数到字符串不一致

spring - 消息转换异常 : Failed to resolve class name in Spring AMQP

tomcat - 需要在单个实例上自动部署多个 Tomcat?

java - 如何在 hibernate 中获取具有不同 HQL 的 POJO 列表?

java - 如何中断 CompletableFuture 的底层执行

java - 记住我不工作..抛出 java.lang.IllegalStateException : UserDetailsService is required

spring - 是否有任何解决方法可以避免调用/刷新以重新加载客户端 spring boot 中的属性?

java - 如何排除 Tomcat 8 上的连接性能故障?

websphere-liberty 上的 java web 应用程序和 Postgres