001package io.freefair.spring.okhttp.logging; 002 003import io.freefair.spring.okhttp.ApplicationInterceptor; 004import io.freefair.spring.okhttp.OkHttp3AutoConfiguration; 005import okhttp3.logging.HttpLoggingInterceptor; 006import org.springframework.beans.factory.ObjectProvider; 007import org.springframework.boot.autoconfigure.AutoConfigureBefore; 008import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; 009import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; 010import org.springframework.boot.context.properties.EnableConfigurationProperties; 011import org.springframework.context.annotation.Bean; 012import org.springframework.context.annotation.Configuration; 013 014/** 015 * @author Lars Grefer 016 */ 017@Configuration(proxyBeanMethods = false) 018@ConditionalOnClass(HttpLoggingInterceptor.class) 019@AutoConfigureBefore(OkHttp3AutoConfiguration.class) 020@EnableConfigurationProperties(OkHttp3LoggingInterceptorProperties.class) 021public class OkHttp3LoggingInterceptorAutoConfiguration { 022 023 @Bean 024 @ApplicationInterceptor 025 @ConditionalOnMissingBean 026 public HttpLoggingInterceptor okHttp3LoggingInterceptor( 027 OkHttp3LoggingInterceptorProperties properties, 028 ObjectProvider<HttpLoggingInterceptor.Logger> logger 029 ) { 030 HttpLoggingInterceptor.Logger actualLogger = logger.getIfUnique(() -> HttpLoggingInterceptor.Logger.DEFAULT); 031 032 HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor(actualLogger); 033 034 httpLoggingInterceptor.level(properties.getLevel()); 035 036 return httpLoggingInterceptor; 037 } 038}