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)
}
}