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 보안 정책
빨주노초잠만보
빨주노초잠만보
  • 빨주노초잠만보
    과거의 나를 통해 미래의 나를 성장시키자
    빨주노초잠만보
  • 전체
    오늘
    어제
    • 분류 전체보기 (117)
      • 우아한테크코스 (6)
      • TEKHIT ANDROID SCHOOL (4)
      • Android Architecture (8)
      • Android (43)
      • PROJECT (11)
      • KOTLIN (12)
        • 코루틴의 정석 (3)
      • BACK END (12)
      • CS (4)
      • 컨퍼런스 (4)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    Gap Buffer
    MVI
    flow
    process Context Switching
    컴포즈 디자인 시스템
    callbackflow
    retrofit call
    DataSource
    Repository Pattern
    Compose Gap Buffer
    SlotTable
    Room
    android Room
    Compose Typography
    android clean architecture
    DI
    Throttle
    thread Context Switching
    ThrottleFirst
    sealed class
    슬롯 테이블
    의존성 주입
    repository
    안드로이드 디자인 시스템
    value class
    Compose SlotTable
    STATEFLOW
    Clean Architecture
    코틀린 코루틴의 정석
    orbit
  • 최근 댓글

  • 최근 글

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

티스토리툴바