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.autoconfigure.condition.ConditionalOnProperty; 011import org.springframework.boot.context.properties.EnableConfigurationProperties; 012import org.springframework.context.annotation.Bean; 013import org.springframework.context.annotation.Configuration; 014 015/** 016 * @author Lars Grefer 017 */ 018@Configuration(proxyBeanMethods = false) 019@ConditionalOnClass(HttpLoggingInterceptor.class) 020@AutoConfigureBefore(OkHttp3AutoConfiguration.class) 021@EnableConfigurationProperties(OkHttp3LoggingInterceptorProperties.class) 022public class OkHttp3LoggingInterceptorAutoConfiguration { 023 024 @Bean 025 @ApplicationInterceptor 026 @ConditionalOnMissingBean 027 @ConditionalOnProperty(value = "okhttp.logging.enabled", havingValue = "true", matchIfMissing = true) 028 public HttpLoggingInterceptor okHttp3LoggingInterceptor( 029 OkHttp3LoggingInterceptorProperties properties, 030 ObjectProvider<HttpLoggingInterceptor.Logger> logger 031 ) { 032 HttpLoggingInterceptor.Logger actualLogger = logger.getIfUnique(() -> HttpLoggingInterceptor.Logger.DEFAULT); 033 034 HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor(actualLogger); 035 036 //noinspection deprecation 037 httpLoggingInterceptor.setLevel(properties.getLevel()); 038 039 return httpLoggingInterceptor; 040 } 041}