我在 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));
最佳答案
您正在创建一个新的异常而不是记录源异常,因此解决方案很简单:
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);
}
这样,异常就会按照您想要的方式记录下来。
关于android - 在 Android 上,使用调用类作为事件源来记录 Crashlytics 事件的包装器方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35327859/