본문 바로가기

Android

OkHTTP httpLoggingInterceptor

 

이번엔 OKHttp Logging Interceptor를 사용하여 HTTP 통신 로그를 기록하는 방법 입니다. 단순히 Retrofit 을 사용해 네트워크 통신만 하려 했는데 하면 할 수록 다양한 방법들을 접하는게 너무 잼있네요

 

okHttp3 logging interceptor을 사용하기 위해 Gradle Dependencis에 아래 빌드 종속 항목 중 okhttp 관련 종속성을 추가해주세요.

implementation 'com.squareup.okhttp3:logging-interceptor:4.9.2'

 

메소드를 그대로 사용해도 되지만 제가 원하는 형태대로 메시지를 만들고 싶어서 오버라이딩 해줬습니다.

private fun httpLoggingInterceptor(): HttpLoggingInterceptor {
    val interceptor = HttpLoggingInterceptor { message -> Log.e("MyHTTPLog :", message + "") }
    return interceptor.setLevel(HttpLoggingInterceptor.Level.BODY)
}

okHttpClient 객체에 addInterceptor()에 메소드를 추가해줍니다.

private var okHttpClient: OkHttpClient = OkHttpClient.Builder()
    .addInterceptor(httpLoggingInterceptor())
    .connectTimeout(100, TimeUnit.MINUTES)
    .readTimeout(100, TimeUnit.SECONDS)
    .writeTimeout(100, TimeUnit.SECONDS)
    .build()

전체 코드

package com.myproject.networkprogramming.retrofit

import android.util.Log
import okhttp3.OkHttpClient
import okhttp3.logging.HttpLoggingInterceptor
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory
import java.util.concurrent.TimeUnit


object NodeRetrofitInstance {
    val BASE_URL = "http://localhost:80"

    private var okHttpClient: OkHttpClient = OkHttpClient.Builder()
        .addInterceptor(httpLoggingInterceptor())
        .connectTimeout(100, TimeUnit.MINUTES)
        .readTimeout(100, TimeUnit.SECONDS)
        .writeTimeout(100, TimeUnit.SECONDS)
        .build()


    private val client: Retrofit = Retrofit
        .Builder()
        .baseUrl(BASE_URL)
        .client(okHttpClient)
        .addConverterFactory(GsonConverterFactory.create())
        .build()

    fun getInstance(): Retrofit = client
}

private fun httpLoggingInterceptor(): HttpLoggingInterceptor {
    val interceptor = HttpLoggingInterceptor { message -> Log.e("MyHTTPLog :", message + "") }
    return interceptor.setLevel(HttpLoggingInterceptor.Level.BODY)
}

출력 화면

'Android' 카테고리의 다른 글

Android Gallery Permission  (0) 2023.12.17
Android Runtime Permission  (1) 2023.12.17
Retrofit Network Time out  (0) 2023.12.15
안드로이드 HTTP 보안 정책  (0) 2023.12.14
Android Network Programming 2  (0) 2023.12.14