Не удается отключить ведение журнала отладки для 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)

Другие вопросы по тегам