LoggingInterceptor

Additional

Language
Kotlin
Version
3.1.0 (May 3, 2020)
Created
Feb 22, 2017
Updated
Nov 23, 2023
Owner
ihsan. (ihsanbal)
Contributors
ihsan. (ihsanbal)
Gökhan Türedi (gturedi)
Volodymyr Art (mrArtCore)
Illia Achour (smelfungus)
nagaprakash2020
5
Activity
Badge
Generate
Download
Source code

LoggingInterceptor - Interceptor for OkHttp3 with pretty logger

Usage

val client = OkHttpClient.Builder()
    client.addInterceptor(LoggingInterceptor.Builder()
             .setLevel(Level.BASIC)
             .log(VERBOSE)
             .addHeader("cityCode","53")
             .addQueryParam("moonStatus", "crescent")
             .build())

Download

Gradle:

Groovy

allprojects {
 repositories {
  maven { url 'https://jitpack.io' }
 }
}

dependencies {
 implementation('com.github.ihsanbal:LoggingInterceptor:3.1.0') {
         exclude group: 'org.json', module: 'json'
     }
}

kotlin DSL

allprojects {
 repositories {
  maven { setUrl("https://jitpack.io") }
 }
}


dependencies {
 implementation("com.github.ihsanbal:LoggingInterceptor:3.1.0") {
         exclude(group = "org.json", module = "json")
     }
}

Maven:

<repository>
   <id>jitpack.io</id>
   <url>https://jitpack.io</url>
</repository>

<dependency>
    <groupId>com.github.ihsanbal</groupId>
    <artifactId>LoggingInterceptor</artifactId>
    <version>3.1.0</version>
</dependency>

Logger & Mock Support

LoggingInterceptor.Builder()
    //Add logger to print log as plain text
    .logger(object : Logger {
          override fun log(level: Int, tag: String?, msg: String?) {
              Log.e("$tag - $level", "$msg")
          }
      })
      //Enable mock for develop app with mock data
      .enableMock(BuildConfig.MOCK, 1000L, object : BufferListener {
          override fun getJsonResponse(request: Request?): String? {
              val segment = request?.url?.pathSegments?.getOrNull(0)
              return mAssetManager.open(String.format("mock/%s.json", segment)).source().buffer().readUtf8()
          }
      })

Level

setLevel(Level.BASIC)
       .NONE // No logs
       .BASIC // Logging url,method,headers and body.
       .HEADERS // Logging headers
       .BODY // Logging body

Platform - Platform

log(Platform.WARN) // setting log type

Tag

tag("LoggingI") // Request & response each log tag
request("request") // Request log tag
response("response") // Response log tag

Header - Recipes

addHeader("token", "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 ") // Adding to request

Notes

Some tips about log at this blog post: “The way to get faster on development.”

Also use the filter & configure logcat header for a better result