Nexters / BandalArt-Android

부담 없는 만다라트 계획표로 당신의 목표를 더욱 선명하게, 반다라트 Android
https://play.google.com/store/apps/details?id=com.nexters.bandalart
23 stars 0 forks source link

Retrofit request, response Body가 logcat 에 출력이 되지 않는 이슈 #118

Closed easyhooon closed 1 year ago

easyhooon commented 1 year ago
private const val MaxTimeoutMillis = 3000L

private val json = Json {
  encodeDefaults = true
  ignoreUnknownKeys = true
  prettyPrint = true
  isLenient = true
}

private val jsonRule = Json { json }

@Module
@InstallIn(SingletonComponent::class)
internal object NetworkModule {

  @Singleton
  @Provides
  fun provideRetrofitHttpClient(dataStoreProvider: DataStoreProvider): Retrofit {
    val contentType = "application/json".toMediaType()
    val httpClient = OkHttpClient.Builder()
      .connectTimeout(MaxTimeoutMillis, TimeUnit.MILLISECONDS)
      .addInterceptor { chain: Interceptor.Chain ->
        val request = chain.request().newBuilder()
          .addHeader("Content-Type", "application/json")
          .addHeader("X-GUEST-KEY", runBlocking { dataStoreProvider.getGuestLoginToken() })
          .build()
        chain.proceed(request)
      }
      .addInterceptor(
        HttpLoggingInterceptor { message ->
          Timber.tag("HttpClient").d(message)
        }.setLevel(HttpLoggingInterceptor.Level.BODY),
      )
      .build()

    return Retrofit.Builder()
      .baseUrl(BuildConfig.SERVER_BASE_URL)
      .client(httpClient)
      .addConverterFactory(jsonRule.asConverterFactory(contentType))
      .build()
  }
}

다음과 같이 setLevel(HttpLoggingInterceptor.Level.BODY), 로 설정을 하였으나 request, response 의 body가 로그캣에 출력되지 않고 , request의 endpoint 와 response 의 httpCode 만 출력되는 문제

easyhooon commented 1 year ago

119