Debbi Story

[Android] OkHttpClient + Moshi response Log 보기 쉽게 출력하기! 본문

안드로이드/Tip

[Android] OkHttpClient + Moshi response Log 보기 쉽게 출력하기!

Debbi 2022. 1. 3. 00:13
728x90

안녕하세요. 보통 네트워크 통신 응답을 Log로 찍게되면 줄바꿈이 안되고 

내용이 많을땐 짤려서 보이게 됩니다.

아래처럼 사용하시면 json형식으로 보기 쉽게 출력이 됩니다!

val logger = HttpLoggingInterceptor.Logger { message ->
    if (!message.startsWith("{") && !message.startsWith("[")) {
        Timber.tag("OkHttp").d(message)
        return@Logger
    }
    try {
        val source = Buffer().writeUtf8(message)
        val reader = JsonReader.of(source)
        val value = reader.readJsonValue()
        val adapter = Moshi.Builder().build().adapter<Any>(Any::class.java).indent("    ")
        val result = adapter.toJson(value)
        Timber.tag("OkHttp_Moshi").d(result)
    }catch (e: Exception) {
        e.printStackTrace()
        Timber.tag("OkHttp").d(message)
    }
}
val logging = HttpLoggingInterceptor(logger)
if (BuildConfig.DEBUG) logging.level = HttpLoggingInterceptor.Level.BODY
val okHttpClient = OkHttpClient.Builder()
okHttpClient.interceptors().add(logging)
okHttpClient.build()