코딩하는 일용직 노동자

안드로이드 Logcat 에 json 표시를 이쁘게 해보자. 본문

안드로이드

안드로이드 Logcat 에 json 표시를 이쁘게 해보자.

bacass 2021. 5. 5. 21:33

안드로이드 스튜디오에서 많이 사용하는 툴이 Logcat입니다.
일반적인 간단한 Log 는 괜찮지만 api를 호출하고 결과를 json으로 받았을때, 그리고 그 json의 길이가 엄청나게 길때
Log가 중간에 짤리는것을 볼 수 있습니다.

Logcat 한줄의 길이가 4076byte까지만 표시되기 때문입니다.

json Log를 보기에도 편하고 짤리지도 않게 표시해봅시다.

#1 Timber 셋팅
Timber라는 라이브러리를 이용해보겠습니다. 
Timber는 Logging 라이브러리 입니다.

gradle에 Timber를 추가해줍니다.

implementation 'com.jakewharton.timber:timber:4.7.1'

 

그리고 프로젝트에서 가장 먼저 시작되는 Activity나 또는 Application 클래스에 Timber를 셋팅해줍니다.
저는 MyApplication 클래스의 onCreate() 에서 셋팅해줬습니다.

override fun onCreate() {
    super.onCreate()

    Timber.plant(Timber.DebugTree())
}

 

#2 Gson 셋팅
네트워크 의 response를 Gson을 이용해 파싱하도록 처리해줍니다.
워낙 많이 사용하는 라이브러리 이니 따로 설명하진 않겠습니다.


#3 로그를 찍어보자
Retrofit 에서 response Log를 찍도록 한 처리에 Timber와 Gson을 이용해 처리해주겠습니다. 

addInterceptor(HttpLoggingInterceptor(object : HttpLoggingInterceptor.Logger {
    override fun log(message: String) {
        if (!message.startsWith("{") && !message.startsWith("[")) {
            Timber.tag("OkHttp").d(message)
            return
        }
        try {
            // Timber 와 Gson setPrettyPrinting 를 이용해 json 을 보기 편하게 표시해준다.
            Timber.tag("OkHttp").d(GsonBuilder().setPrettyPrinting().create().toJson(JsonParser().parse(message)))
        } catch (m: JsonSyntaxException) {
            Timber.tag("OkHttp").d(message)
        }
    }

}).apply {
    level = HttpLoggingInterceptor.Level.BODY
})

 

#4 일반적인 로그와 비교
기본적인 Logd() 를 이용하면 짤리는 것을 볼 수 있습니다.

로그가 보기에도 불편하고, 다 표시되지 않고 중간에 짤린다.


Timber 와 Gson setPrettyPrinting 를 이용하면 json을 보기 편하게 표시해줍니다.

json response 를 훨씬 보기 편하게 보여준다.