Не удается отключить ведение журнала отладки для Wiremock
Я использую Wiremock для своих тестов в приложении Spring Boot. Кажется, я не могу заставить логи не выводить все логи отладки, что делает мои тесты очень многословными.
Я вижу, что использовать SLF4J при запуске:
DEBUG wiremock.org.eclipse.jetty.util.log - ведение журнала в Logger[wiremock.org.eclipse.jetty.util.log] через wiremock.org.eclipse.jetty.util.log.Slf4jLog
Но пытаясь настроить его в моем application.properties через,
logging.level.wiremock.org.eclipse = WARN
Не имеет никакого эффекта, я также настроил
logging.level.com.github.tomakehurst.wiremock=WARN
Но опять же, никакого эффекта. Так как я использую spring-boot-starter-web
который использует spring-boot-starter-logging
, который, если я правильно понимаю, использует 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 регистрировать уровень отладки. Что мне не хватает?
4 ответа
Хорошо, у меня только что была эта проблема и, наконец, она решена. Есть 3 различных регистратора, которые вам нужно настроить - регистратор eclipse на wiremock.org.eclipse - уведомитель wiremock в WireMock - регистратор серверных пакетов в "/" или в любом другом месте вашего регистратора. - регистрация кода проволочной связи на com.github.tomakehurst.wiremock
Я обнаружил, что bootstrap.yml не влияет на эти регистраторы, поэтому вам нужно поместить их в ваш logback-test.xml в вашей папке /src/test/resources
со следующими записями.
<!-- 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"/>
Поскольку вы используете Spring Boot, вы можете просто добавить эту конфигурацию: https://stackoverflow.com/a/75626043/3263041
Быстрое решение - изменить logging.level.root
; INFO
сделает WireMock достаточно подробным, чтобы проверить соответствие заглушек, пока WARN
предотвратит это.
Конечно, у этого есть побочный эффект; это влияет на все журналы; но грязно и быстро.
Если вы хотите добиться этого программно и используете 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)