Как сделать логирование в Retrofit и OkHttp

«Как сделать логирование в Retrofit и OkHttp» — вопрос из категории Сети, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для логирования запросов и ответов в Retrofit с OkHttp нужно добавить HttpLoggingInterceptor в клиент OkHttp.

val loggingInterceptor = HttpLoggingInterceptor().apply {
    level = HttpLoggingInterceptor.Level.BODY // Уровень логирования (NONE, BASIC, HEADERS, BODY)
}

val okHttpClient = OkHttpClient.Builder()
    .addInterceptor(loggingInterceptor)
    .build()

val retrofit = Retrofit.Builder()
    .baseUrl("https://api.example.com/")
    .client(okHttpClient)
    .build()

Нюансы:

  • Level.BODY логирует тело запроса, но может содержать конфиденциальные данные.
  • В релизной сборке лучше отключать (Level.NONE) или фильтровать логи.
  • Можно создать кастомный интерсептор для выборочного логирования.