diff --git a/src/amazon/java/org/tasks/analytics/Tracker.java b/src/amazon/java/org/tasks/analytics/Tracker.java index 7a56f0f7d..ee83d2ecc 100644 --- a/src/amazon/java/org/tasks/analytics/Tracker.java +++ b/src/amazon/java/org/tasks/analytics/Tracker.java @@ -2,6 +2,8 @@ package org.tasks.analytics; import android.content.Context; +import com.google.android.gms.analytics.ExceptionParser; +import com.google.android.gms.analytics.ExceptionReporter; import com.google.android.gms.analytics.GoogleAnalytics; import com.google.android.gms.analytics.HitBuilders; import com.google.android.gms.analytics.StandardExceptionParser; @@ -14,13 +16,15 @@ import org.tasks.injection.ForApplication; import javax.inject.Inject; import javax.inject.Singleton; +import timber.log.Timber; + @Singleton public class Tracker { private final GoogleAnalytics analytics; private final com.google.android.gms.analytics.Tracker tracker; - private final StandardExceptionParser exceptionParser; - private Context context; + private final ExceptionParser exceptionParser; + private final Context context; @Inject public Tracker(@ForApplication Context context) { @@ -28,10 +32,28 @@ public class Tracker { analytics = GoogleAnalytics.getInstance(context); tracker = analytics.newTracker(R.xml.google_analytics); tracker.setAppVersion(Integer.toString(BuildConfig.VERSION_CODE)); - exceptionParser = new StandardExceptionParser(context, null); - if (BuildConfig.DEBUG) { - analytics.setDryRun(true); - } + final StandardExceptionParser standardExceptionParser = new StandardExceptionParser(context, null); + exceptionParser = new ExceptionParser() { + @Override + public String getDescription(String thread, Throwable throwable) { + StringBuilder stack = new StringBuilder() + .append(standardExceptionParser.getDescription(thread, throwable)) + .append("\n") + .append(throwable.getClass().getName()) + .append("\n"); + for (StackTraceElement element : throwable.getStackTrace()) { + stack.append(element.toString()) + .append("\n"); + } + return stack.toString(); + } + }; + ExceptionReporter reporter = new ExceptionReporter( + tracker, + Thread.getDefaultUncaughtExceptionHandler(), + context); + reporter.setExceptionParser(exceptionParser); + Thread.setDefaultUncaughtExceptionHandler(reporter); } public void showScreen(String screenName) { @@ -48,6 +70,7 @@ public class Tracker { } public void reportException(Thread thread, Throwable t) { + Timber.e(t, t.getMessage()); tracker.send(new HitBuilders.ExceptionBuilder() .setDescription(exceptionParser.getDescription(thread.getName(), t)) .setFatal(false) diff --git a/src/generic/java/org/tasks/analytics/Tracker.java b/src/generic/java/org/tasks/analytics/Tracker.java index be0da64a1..2d37fe760 100644 --- a/src/generic/java/org/tasks/analytics/Tracker.java +++ b/src/generic/java/org/tasks/analytics/Tracker.java @@ -2,6 +2,8 @@ package org.tasks.analytics; import javax.inject.Inject; +import timber.log.Timber; + public class Tracker { @Inject @@ -18,11 +20,11 @@ public class Tracker { } public void reportException(Throwable t) { - + Timber.e(t, t.getMessage()); } public void reportException(Thread thread, Throwable t) { - + Timber.e(t, t.getMessage()); } public void reportEvent(Tracking.Events event) { diff --git a/src/googleplay/java/org/tasks/analytics/Tracker.java b/src/googleplay/java/org/tasks/analytics/Tracker.java index 2d0cecee9..14d988f9c 100644 --- a/src/googleplay/java/org/tasks/analytics/Tracker.java +++ b/src/googleplay/java/org/tasks/analytics/Tracker.java @@ -17,6 +17,8 @@ import org.tasks.injection.ForApplication; import javax.inject.Inject; import javax.inject.Singleton; +import timber.log.Timber; + @Singleton public class Tracker { @@ -69,6 +71,7 @@ public class Tracker { } public void reportException(Thread thread, Throwable t) { + Timber.e(t, t.getMessage()); tracker.send(new HitBuilders.ExceptionBuilder() .setDescription(exceptionParser.getDescription(thread.getName(), t)) .setFatal(false) diff --git a/src/googleplay/java/org/tasks/receivers/TeslaUnreadReceiver.java b/src/googleplay/java/org/tasks/receivers/TeslaUnreadReceiver.java index edcd6d79e..a2f6dd470 100644 --- a/src/googleplay/java/org/tasks/receivers/TeslaUnreadReceiver.java +++ b/src/googleplay/java/org/tasks/receivers/TeslaUnreadReceiver.java @@ -84,7 +84,6 @@ public class TeslaUnreadReceiver extends InjectingBroadcastReceiver { } catch (IllegalArgumentException ex) { /* Fine, TeslaUnread is not installed. */ } catch (Exception e) { - Timber.e(e, e.getMessage()); tracker.reportException(e); } } diff --git a/src/main/java/com/todoroo/andlib/data/DatabaseDao.java b/src/main/java/com/todoroo/andlib/data/DatabaseDao.java index 2bc94a535..ca0c577df 100644 --- a/src/main/java/com/todoroo/andlib/data/DatabaseDao.java +++ b/src/main/java/com/todoroo/andlib/data/DatabaseDao.java @@ -151,7 +151,7 @@ public class DatabaseDao { * @return # of deleted items */ public int deleteWhere(Criterion where) { - Timber.d("deleteWhere(%s)", where); + Timber.v("deleteWhere(%s)", where); return database.delete(table.name, where.toString(), null); } @@ -206,7 +206,7 @@ public class DatabaseDao { if (result.get()) { item.markSaved(); if (BuildConfig.DEBUG) { - Timber.d("%s %s", op, item.toString()); + Timber.v("%s %s", op, item.toString()); } } } diff --git a/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java b/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java index 6c9b2c955..9598c7dde 100755 --- a/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java +++ b/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java @@ -55,7 +55,6 @@ import javax.inject.Inject; import butterknife.BindView; import butterknife.ButterKnife; -import timber.log.Timber; import static org.tasks.date.DateTimeUtils.newDateTime; @@ -266,7 +265,6 @@ public final class TaskEditFragment extends InjectingFragment implements Toolbar } } } catch(Exception e) { - Timber.e(e, e.getMessage()); tracker.reportException(e); } return false; diff --git a/src/main/java/com/todoroo/astrid/service/StartupService.java b/src/main/java/com/todoroo/astrid/service/StartupService.java index 2f8b559c8..d18da18be 100644 --- a/src/main/java/com/todoroo/astrid/service/StartupService.java +++ b/src/main/java/com/todoroo/astrid/service/StartupService.java @@ -54,7 +54,6 @@ public class StartupService { try { database.openForWriting(); } catch (SQLiteException e) { - Timber.e(e, e.getMessage()); tracker.reportException(e); return; } diff --git a/src/main/java/org/tasks/receivers/RepeatConfirmationReceiver.java b/src/main/java/org/tasks/receivers/RepeatConfirmationReceiver.java index c463e9c83..69250c723 100644 --- a/src/main/java/org/tasks/receivers/RepeatConfirmationReceiver.java +++ b/src/main/java/org/tasks/receivers/RepeatConfirmationReceiver.java @@ -4,7 +4,6 @@ import android.app.Activity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; -import android.support.design.widget.Snackbar; import android.view.View; import com.todoroo.andlib.data.Property; @@ -64,7 +63,6 @@ public class RepeatConfirmationReceiver extends BroadcastReceiver { try { showSnackbar(taskListFragment, task, oldDueDate, newDueDate); } catch (Exception e) { - Timber.e(e, e.getMessage()); tracker.reportException(e); } }