Есть ли способ логировать только тело с симулированным весенним клиентом?

Есть ли способ логировать только тело с симулированным весенним клиентом? Используя Log.level, мне кажется, что я могу включать только тело с полной регистрацией, и в этом случае он также печатает заголовки. Который я не хочу видеть в журналах.

1 ответ

По умолчанию Logger использует Log.Level контролировать то, что зарегистрировано и работает способом, который является аддитивным. Это означает, что повышение уровня регистрирует больше информации. Чтобы настроить это поведение, вам нужно будет предоставить свой собственный Logger реализация. В частности, вы можете расширить один из включенных регистраторов и настроить logAndRebufferResponse метод:

public class MyLogger extends JavaLogger {
     protected Response logAndRebufferResponse(String configKey,
                                        Level logLevel,
                                        Response response,
                                        long elapsedTime) {
        // only log the response data, skip the headers
     }
}

Затем включите этот регистратор в конфигурацию Feign.

 API api = Feign.builder()
                 .logger(new MyLogger())
                 .logLevel(Logger.Level.FULL)
                 .target(API.class, "https://api.example.com");

Все экземпляры этого Feign Client теперь будут использовать ваш логгер.

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