OkHTTP httpLoggingInterceptor

2023. 12. 15. 12:20·Android

 

이번엔 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
'Android' 카테고리의 다른 글
  • Android Gallery Permission
  • Android Runtime Permission
  • Retrofit Network Time out
  • 안드로이드 HTTP 보안 정책
빨주노초잠만보
빨주노초잠만보
  • 빨주노초잠만보
    과거의 나를 통해 미래의 나를 성장시키자
    빨주노초잠만보
  • 전체
    오늘
    어제
    • 분류 전체보기 (108)
      • 우아한테크코스 (6)
      • TEKHIT ANDROID SCHOOL (4)
      • Android Architecture (8)
      • Android (38)
      • PROJECT (11)
      • KOTLIN (10)
        • 코루틴의 정석 (3)
      • BACK END (12)
      • CS (4)
      • 컨퍼런스 (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    orbit
    Room
    컴포즈 디자인 시스템
    sealed class
    ThrottleFirst
    안드로이드 디자인 시스템
    android Room
    Two pass process
    flow
    repository
    retrofit call
    코틀린 코루틴의 정석
    DI
    MVI
    Repository Pattern
    의존성 주입
    coroutine Context Switching
    process Context Switching
    DataSource
    Throttle
    android view lifecylce
    view 생명주기
    callbackflow
    Clean Architecture
    2025 우아콘 후기
    value class
    android clean architecture
    STATEFLOW
    thread Context Switching
    Compose Typography
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
빨주노초잠만보
OkHTTP httpLoggingInterceptor
상단으로

티스토리툴바