Custom ReleaseTree не показывает журналы, используя Timber

Я использую кастом ReleaseTree для моего приложения, использующего Timber для фильтрации журналов. Но при сборке релиза apk логи приложения не отображаются в logcat. Когда используешь Timber.DebugTree() в релизе сборки логи отображаются корректно.

Вот мой класс ReleaseTree:

class ReleaseTree : Timber.Tree() {

    override fun log(priority: Int, tag: String?, message: String, throwable: Throwable?) {
        // Don't log VERBOSE, DEBUG and INFO
        if (priority == Log.VERBOSE) {
            return
        }


        if (priority == Log.ERROR){
            val t = throwable ?: Exception(message)

            // Crashlytics
            Crashlytics.setInt(CRASHLYTICS_KEY_PRIORITY, priority)
            Crashlytics.setString(CRASHLYTICS_KEY_TAG, tag)
            Crashlytics.setString(CRASHLYTICS_KEY_MESSAGE, message)
            Crashlytics.logException(t)
        }

    }

    companion object {
        private val CRASHLYTICS_KEY_PRIORITY = "Priority"
        private val CRASHLYTICS_KEY_TAG = "Tag"
        private val CRASHLYTICS_KEY_MESSAGE = "Message"
    }
}

Как я инициализирую ReleaseTree из класса Application:

Fabric.with(this, new Crashlytics());
Timber.plant(new ReleaseTree());

1 ответ

В журнале вашего метода отсутствует строка.

Вы должны войти в logcat из вашего собственного дерева

override fun log(priority: Int, tag: String?, message: String, throwable: Throwable?) {
        // Don't log VERBOSE, DEBUG and INFO
        if (priority == Log.VERBOSE) {
            return
        } else {
          Log.println(priority, tag, message);
        }


        if (priority == Log.ERROR){
            val t = throwable ?: Exception(message)

            // Crashlytics
            Crashlytics.setInt(CRASHLYTICS_KEY_PRIORITY, priority)
            Crashlytics.setString(CRASHLYTICS_KEY_TAG, tag)
            Crashlytics.setString(CRASHLYTICS_KEY_MESSAGE, message)
            Crashlytics.logException(t)
        }

    }

Другие вопросы по тегам