Sping Boot :如何禁用Tomcat启动日志?

sz81bmfz  于 11个月前  发布在  其他
关注(0)|答案(6)|浏览(170)

我正在使用Sping 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

字符串
我对这些都不感兴趣,它们只是噪音。我怎么才能摆脱这些日志呢?我试过各种解决方案,但到目前为止都没有奏效。

aij0ehis

aij0ehis1#

我花了五个小时才弄明白:

  • 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),所以这根本不会影响您的标准日志记录。

roejwanj

roejwanj2#

在SpringBootApplication启动之前,可以通过将java.util.logging格式化程序的system属性设置为空String来省略Apachejuli日志,如下所示
System.setProperty(“java.util.logging.SimpleFormatter.format”,“”);

ffx8fchx

ffx8fchx3#

您可以在application.properties中设置以下内容:
logging.group.tomcat=org.apache.catalina, org.apache.coyote, org.apache.tomcatlogging.level.tomcat=OFF
由于嵌入式Tomcat使用JUL,这将把与Tomcat相关的类的JUL日志记录级别设置为OFF

nimxete2

nimxete24#

查看控制台中出现的Loggername(如果是Log4j(2))。
然后,复制名称并将其添加到 application.properties 文件中的 logging.level.
在下面的截图中,如果我取消注解 DispatcherServlet 行,日志记录将消失:


的数据

kx5bkwkv

kx5bkwkv5#

一个稍微不那么突兀的方法是指定一个JUL配置属性文件作为系统属性(参见JUL JavaDoc和How to set up java logging using a properties file? (java.util.logging)),并根据需要降低日志级别。
所以添加这样一个系统属性:-Djava.util.logging.config.file=logging.properties
并在该文件中使用如下配置:

.level=WARNING
handlers=java.util.logging.ConsoleHandler
java.util.logging.ConsoleHandler.level=WARNING

字符串
使用WARNING将关闭所有Tomcat启动日志记录,但仍然显示任何问题。
另一种方法是将JUL日志重新路由到log4J或Logback,参见。

o2g1uqev

o2g1uqev6#

application.yaml

logging:
  level:
    org.apache.catalina: OFF

字符串
pom.xml

<dependencies>
    ...
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jul-to-slf4j</artifactId>
    </dependency>
</dependencies>


对我很有效。

相关问题