From cf0167a914fa05deaa51fba3d693d06faddd0074 Mon Sep 17 00:00:00 2001 From: Macklin Underdown Date: Thu, 19 May 2016 14:45:47 -0400 Subject: [PATCH] Add Crashlytics Timber.Tree This commit logs non-fatal errors and warnings to Crashlytics in production. --- .../java/org/selfconference/android/App.java | 2 ++ .../android/util/CrashlyticsTree.java | 27 +++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 app/src/main/java/org/selfconference/android/util/CrashlyticsTree.java diff --git a/app/src/main/java/org/selfconference/android/App.java b/app/src/main/java/org/selfconference/android/App.java index df6e050..32c6ece 100644 --- a/app/src/main/java/org/selfconference/android/App.java +++ b/app/src/main/java/org/selfconference/android/App.java @@ -8,6 +8,7 @@ import dagger.ObjectGraph; import io.fabric.sdk.android.Fabric; import org.selfconference.android.data.Injector; +import org.selfconference.android.util.CrashlyticsTree; import timber.log.Timber; import timber.log.Timber.DebugTree; @@ -55,6 +56,7 @@ protected void installLeakCanary() { protected void setupFabric() { if (!BuildConfig.DEBUG) { Fabric.with(this, new Crashlytics()); + Timber.plant(new CrashlyticsTree()); } } } diff --git a/app/src/main/java/org/selfconference/android/util/CrashlyticsTree.java b/app/src/main/java/org/selfconference/android/util/CrashlyticsTree.java new file mode 100644 index 0000000..0195730 --- /dev/null +++ b/app/src/main/java/org/selfconference/android/util/CrashlyticsTree.java @@ -0,0 +1,27 @@ +package org.selfconference.android.util; + +import android.util.Log; +import com.crashlytics.android.Crashlytics; +import com.crashlytics.android.core.CrashlyticsCore; +import timber.log.Timber; + +public final class CrashlyticsTree extends Timber.Tree { + @Override protected void log(int priority, String tag, String message, Throwable t) { + CrashlyticsCore crashlyticsCore = Crashlytics.getInstance().core; + + crashlyticsCore.log(priority, tag, message); + + if (t == null) { + return; + } + if (priority == Log.ERROR) { + crashlyticsCore.logException(t); + } else { + crashlyticsCore.log(priority, tag, Log.getStackTraceString(t)); + } + } + + @Override protected boolean isLoggable(int priority) { + return !(priority == Log.DEBUG || priority == Log.VERBOSE); + } +}