【问题标题】:on Android, wrapper method for logging Crashlytics events with calling class as source of event在 Android 上,使用调用类作为事件源记录 Crashlytics 事件的包装器方法
【发布时间】:2016-02-10 23:13:21
【问题描述】:

我在 Utility.class 中有一个实用程序方法,它是用于发送 Crashlytics 事件的包装器。

public static void logCrashlyticsEvent(String message) {
     ...
     Crashlytics.getInstance().core.logException(new Exception(message));
     ...
}

问题是每当我从另一个类中使用它时,Crashlytics 仪表板都会将事件源显示为 Utility.class,如下所示:

Utility.java line 106
com.myApp.util.Utility.logCrashlyticsEvent

而不是将它显示为调用它的实际类。

有没有办法包装对 Crashlytics 的调用,使其仍将调用类显示为事件源?

谢谢。

编辑: 只是为了改进@Andre Classen 解决方案。

public static void logCrashlyticsEvent(HandledException e) {
    Crashlytics.getInstance().core.logException(e);
    Timber.e("Message: %s", e.getMessage());
    // More stuff
}

处理异常:

public class HandledException extends Exception {
    public HandledException(@NonNull String message, Object... args) {
         super(String.format(message, args));
}

}

用法:

Utility.logCrashlyticsEvent(new HandledException("Cast exception, input value1: %s, value2: %s", someValue, anotherValue));

【问题讨论】:

    标签: android crash-reports crashlytics twitter-fabric


    【解决方案1】:

    您正在创建一个新的异常而不是记录源异常,因此解决方案很简单:

    public static void logCrashlyticsEvent(Exception e) {
    .
    .
         Crashlytics.getInstance().core.logException(e);
    .
    .
    }
    

    使用它:

        try{
            String s=null;
            int size=toString().length();
        }
        catch (NullPointerException e){
            com.myApp.util.Utility.logCrashlyticsEvent(e);
        }
    

    这样,异常就会按照您想要的方式记录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-10
      • 1970-01-01
      • 2019-12-22
      • 2012-02-23
      • 1970-01-01
      相关资源
      最近更新 更多