본문 바로가기
Program Language/Android

Crashlytics + Timber?

by KangJinHo 2022. 8. 11.
  1. 개요
    Crashlytics 사용하면서, 디버그 상황에서나, 에러 로그에 관해 아쉽다고 생각한 적이 있었다면 정독해주시면 되겠습니다. Timber 이용하여 효율적으로 앱을 개발하는 방법을 소개합니다.

Timber
Crashlytics

코드 구현


class CrashlyticsTree : Timber.Tree(){
    override fun log(priority: Int, tag: String?,message: String, t: Throwable?) { 
        if (priority == Log.VERBOSE || priority == Log.DEBUG || priority == Log.INFO) {
            return 
            }
            Crashlytics.setInt(CRASHLYTICS\_KEY\_PRIORITY, priority) Crashlytics.setString(CRASHLYTICS\_KEY\_TAG,                 tag) Crashlytics.setString(CRASHLYTICS\_KEY\_MESSAGE, message) 
            if (t == null) { Crashlytics.logException(Exception(message)) } else { Crashlytics.logException(t) } } companion object { private const val CRASHLYTICS\_KEY\_PRIORITY = "priority" private const val CRASHLYTICS\_KEY\_TAG = "tag" private const val CRASHLYTICS\_KEY\_MESSAGE = "message" } }

사용방법

class BaseApplication() : Application(){
    override fun onCreate(){
        if(BuildConfig.Debug){
            Timber.plant(Timber.debugTree())
        }else{
            Timber.plant(CrashlyticsTree())
        }
    }
}

위와 같은 형태로 사용을 하게 되면, Timber.e(throwable) 통하여 에러처리 하였을 때, Debug 상태에서는 Log 창에만 남게 되고, Debug 상태가 아닐 시에는 Crashlytics Report 받아볼 수 있습니다.

  1. 결론
    개발을 하면서 Error Report 관해 고민을 하는 상황이 많았었는데, 위와같은 형태로 사용을 하게 되면 Debug 구분을 하기 때문에 명확하게 Error Report 남길 수 있게 되어 좋다고 판단한다.

댓글