我在Spring Boot应用程序中使用Wiremock进行测试。我似乎无法使日志记录不输出所有调试日志,这使我的测试运行非常详细。
我看到它在启动时使用SLF4J:
DEBUG wiremock.org.eclipse.jetty.util.log - 通过wiremock.org.eclipse.jetty.util.log.Slf4jLog登录Logger [wiremock.org.eclipse.jetty.util.log]
但是尝试在我的application.properties中配置它,
logging.level.wiremock.org.eclipse = WARN
没有效果,我也设置了
logging.level.com.github.tomakehurst.wiremock = WARN
但是,再一次,没有效果。由于我使用spring-boot-starter-web
使用spring-boot-starter-logging
,which if I understand correctly uses Logback,我还尝试在logback-spring.xml
中配置此内容,
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/base.xml"/>
<logger name="wiremock.org.eclipse" level="INFO"/>
</configuration>
同样,我没有做任何事情阻止Wiremock记录调试级别。我错过了什么?
答案 0 :(得分:6)
好的,我刚刚遇到这个问题并最终解决了它。 您需要配置3种不同的记录器 - wiremock.org.eclipse 中的eclipse记录器 - WireMock 的线缆通知器 - &#34; /&#34; 中的serverlet记录器或记录器所在的记录器。 - 记录在 com.github.tomakehurst.wiremock
的线索代码我发现bootstrap.yml不会影响这些记录器,因此您需要将它们放在/ src / test / resources文件夹中的logback-test.xml中
以下条目。
<!-- Turning down the wiremock logging -->
<logger name="com.github.tomakehurst.wiremock" level="WARN"/>
<logger name="wiremock.org" level="ERROR"/>
<logger name="WireMock" level="WARN"/>
<!-- wiremock has per endpoint servlet logging -->
<logger name="/" level="WARN"/>
答案 1 :(得分:0)
一个快速解决方案是更改logging.level.root
; INFO
将使WireMock足够详细以检查存根匹配,而WARN
将阻止它。
当然有副作用。这会影响所有日志记录;但又脏又快。
答案 2 :(得分:0)
如果您想以编程方式实现此目的,并且您将SLF4J与Logback结合使用(Spring Boot 2.2中的默认设置),只需执行以下操作:
((LoggerContext) LoggerFactory.getILoggerFactory()).getLogger("wiremock").setLevel(Level.OFF);
((LoggerContext) LoggerFactory.getILoggerFactory()).getLogger("WireMock").setLevel(Level.OFF);
(使用WireMock 2.25)