我的树:

private static class CrashlyticsReportingTree extends Timber.HollowTree {

    public CrashlyticsReportingTree(Context context) {
      Fabric.with(context, new Crashlytics());
    }

    private static String maybeFormat(String message, Object... args) {
      // If no varargs are supplied, treat it as a request to log the string without formatting.
      if (args == null || args.length == 0) {
        return message;
      } else {
        return String.format(message, args);
      }
    }

    @Override
    public void e(String message, Object... args) {
      String completeMessage = maybeFormat(message, args);
      Crashlytics.logException(new Throwable(completeMessage));
    }

    @Override
    public void e(Throwable t, String message, Object... args) {
      String completeMessage = maybeFormat(message, args);
      Crashlytics.log(completeMessage);
      Crashlytics.logException(t);
    }

  }


错误报告中Fabric的第一行是

...App$CrashlyticsReportingTree.e (App.java:73)
timber.log.Timber$1.e (Timber.java:183)
timber.log.Timber.e (Timber.java:54)


为什么?
如何从堆栈树中删除这些行?

最佳答案

我使用以下Timber树向Crashlytics报告。
不知道为什么您的日志中会显示timber.log.Timber.e,而我的却没有。
也许是因为您在log方法中创建了一个新的Throwable?

   private static class CrashReportingTree extends Timber.HollowTree {
        @Override public void e(Throwable t, String message, Object... args) {
            if(crashlyticsEnabled) {
                Crashlytics.logException(t);
            }
        }

        @Override public void e(String message, Object... args) {
            if(crashlyticsEnabled) {
                final String formattedMessage = String.format(message, args);
                final String tag = "";
                Crashlytics.log(Log.ERROR, tag, formattedMessage);
            }
        }
    }

关于android - 使用Timber和自定义报告树无法看到Fabric中的实际崩溃,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29270538/

10-11 14:44