Crashlytics + Timber?

less than 1 minute read

1. 개요

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

Timber

Crashlytics

2. 코드

  • 구현
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 받아볼 수 있습니다.

3. 결론

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

Updated:

Leave a comment