Program Language/Android

Crashlytics + Timber?

KangJinHo 2022. 8. 11. 16:31
  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 남길 수 있게 되어 좋다고 판단한다.