Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 코틀린
- error
- coroutine
- WebView
- viewpager
- Github
- 웹뷰
- ADB
- Gradle
- 레트로핏
- Kotlin
- 안드로이드
- Android
- build
- dart
- 스튜디오
- 코루틴
- 에러
- 안드로이드 스튜디오
- 깃헙
- studio
- GIT
- RecyclerView
- image
- MVVM
- 안스
- 안드로이드스튜디오
- 유튜브
- 의존성주입
- Retrofit
Archives
- Today
- Total
코딩하는 일용직 노동자
안드로이드 Logcat 에 json 표시를 이쁘게 해보자. 본문
안드로이드 스튜디오에서 많이 사용하는 툴이 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을 보기 편하게 표시해줍니다.
'안드로이드' 카테고리의 다른 글
Cannot invoke setValue on a background thread 에러 해결하기 (0) | 2021.05.12 |
---|---|
kotlin.jvm.internal.Intrinsics.checkNotNullParameter 에러 해결하기 (1) | 2021.05.08 |
NestedScrollView 스크롤 현상 수정. (0) | 2021.05.05 |
로딩용 이미지, 아이콘, 애니메이션 파일 제공 사이트 (0) | 2021.05.04 |
안드로이드 워치 디바이스 디버깅하기 (0) | 2021.03.27 |