우찬쓰 개발블로그

편리한 안드로이드 로그 라이브러리, 로거(Logger) 사용해보기 본문

안드로이드/편리한 라이브러리

편리한 안드로이드 로그 라이브러리, 로거(Logger) 사용해보기

이우찬 2018. 11. 15. 11:15
반응형

현업에서 안드로이드 개발을 하면서 log를 불편하게 사용하는 사람들을 많이 보았다.


그나마 짬밥(?)이 오래된 사람들은 로그 유틸 클래스를 만들어서 사용하거나, 자기만의 규칙을 만들어서 쓰곤한다.


물론 그들이 틀린것은 아니지만 알다시피 다른사람들이 본인만의 방식으로 만든 코드를 유지보수 하기란 여간 힘든 일이 아니다.


하지만 이런 문제를 가볍게 해결해 주면서 Stack Trace 출력, Release로 배포시 로그를 출력 안하게 해주는 기능까지 있는 라이브러리가 있으니, 바로 로거(Logger)이다.


https://github.com/orhanobut/logger


위 링크에서 볼 수 있는 예제 스크린샷을 보자.



깔끔하게 구분되어 나오는 것을 볼 수 있다.


로거의 라이센스는 Apache-2.0이므로 안심하고 사용해도 된다




로거를 사용하기위한 사전작업이 몇가지 있다.


1. App수준의 Gradle에 로거를 impement한다.

implementation 'com.orhanobut:logger:2.2.0'


2. Application 클래스 onCreate에 다음과 같이 간단하게 로거를 설정해보자. 


override fun onCreate() {
super.onCreate()

// Logger Stack trace을 PRINT_STACK_COUNT 개로 조절
val formatStrategy = PrettyFormatStrategy.newBuilder()
.methodCount(PRINT_STACK_COUNT)
.build()

// Release 빌드 시 로그 제거
Logger.addLogAdapter(object : AndroidLogAdapter(formatStrategy) {
override fun isLoggable(priority: Int, tag: String?): Boolean {
return BuildConfig.DEBUG
}
})
}


methodCount는 trace할 stack의 갯수를 정한다. 필자는 5개 정도가 적당하다고 생각한다.


BuildConfig.DEBUG는 앱 빌드시 DEBUG상태인지를 리턴해준다. 필자는 디버그시에만 로그가 보이도록 설정했다.


(Application 클래스를 manifest에 application name으로 추가하는것도 잊지 않도록 하자.)




여기까지가 사전작업 이었고, 더많은 세팅이 있지만 기능을 전부 설명하자면 너무 길기에 우리가 평소 사용하는 로그를 대체할 수 있는 간단한 기능부터 살펴보자.


자바의 기본 로그는 태그가 필요하지만 로거는 굳이 쓰지 않아도 된다.


Logger.d("debug")
Logger.e("error")
Logger.w("warning")
Logger.v("verbose")
Logger.i("information")
Logger.wtf("What a Terrible Failure")



그리고 format arguments를 사용하려면 개발자라면 익숙한 그대로 사용하면 된다.


Logger.d("string %s", "hello")
Logger.d("num %d", 3)


반응형
Comments