Spring Boot:如何禁用Tomcat启动日志记录?

时间:2019-01-08 14:17:45

标签: java spring-boot tomcat logging

我正在使用带有Logback的Spring Boot2.0.x。在启动应用程序(使用嵌入式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

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

4 个答案:

答案 0 :(得分:1)

您可以在application.properties中进行以下设置:

logging.group.tomcat=org.apache.catalina, org.apache.coyote, org.apache.tomcat logging.level.tomcat=OFF

由于嵌入式Tomcat使用JUL,因此会将与Tomcat相关的类的JUL日志记录级别设置为OFF

答案 1 :(得分:1)

像这样在SpringBootApplication启动之前,可以通过将java.util.logging格式化程序系统属性设置为空String来省略Apache juli日志

System.setProperty(“ java.util.logging.SimpleFormatter.format”,“”);

答案 2 :(得分:0)

查看出现在控制台中的 Loggername (对于Log4j(2))。

然后,复制名称并将其添加到 application.properties 文件中的 logging.level。

在下面的屏幕截图中,如果我取消注释 DispatcherServlet 的行,则记录将消失:

enter image description here

答案 3 :(得分:0)

好吧,我花了大约5个小时才弄清楚了:

  • Tomcat使用public void updateAdapter(List<MailDataModel> mailDataModelList){ data.clear(); for (int i = mailDataModelList.size(); i <= 0 ; i--) { data.add(mailDataModel); } mAdapter.setLoaded(); mAdapter.notifyDataSetChanged(); } 的派生词JULI
  • JULI本身与java.util.logging兼容,因此您可以用相同的方式配置它
  • 启动时,嵌入式tomcat不会在乎您的任何日志记录设置(至少对我而言不是这样)

结果是:在我开始使用弹簧嵌入式雄猫之前,我必须这样做:

java.util.logging

这将指示java.util.logging.Logger.getLogger("org.apache").setLevel(java.util.logging.Level.WARNING); (由JULI实现)仅将警告传播到控制台。这消除了tomcat的所有启动噪音,并且所有其他日志记录仍将由您选择的日志记录框架执行(在我的情况下为logback),因此这根本不会影响您的标准日志记录。