首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过标签管理器在谷歌分析v4中进行全栈跟踪

通过标签管理器在谷歌分析v4中进行全栈跟踪
EN

Stack Overflow用户
提问于 2015-03-03 17:08:53
回答 2查看 1.1K关注 0票数 2

我对crash tracking with Analytics有点迷惑。AFIK只能在Analytics中存储不再超过200字节的字符串(每个属性)。因此,不可能看到完整的堆栈跟踪,因为它们通常比200个字符要长得多。

然而,使用Analytics v2应用编程接口,这可以通过EasyTracker实现,就像described here。还有一些使用ga_reportUncaughtExceptions属性的半复制文件:Google Analytics crash report only shows first line of stack traceException stack trace lost in Google Analytics v2 for Android?

因为我使用Tag-Manager,所以我不能使用这些解决方案,我已经知道如何使用Tag-Manager正确跟踪前200字节的崩溃,但是完整堆栈跟踪是什么呢?

我还使用ACRA为用户提供了一种直接联系我们的方法(使用堆栈跟踪作为附件),因此与Google crash reporter的直接连接将被停止,Google Play控制台也不会显示崩溃。

EN

回答 2

Stack Overflow用户

发布于 2015-05-25 19:25:45

对于安卓中所有未捕获的异常,都可以在谷歌分析v4中发送完整的堆栈跟踪。

在Application类中将自动活动跟踪设置为true。

代码语言:javascript
复制
    // Enable automatic activity tracking for your app
    tracker.enableAutoActivityTracking(true);

进一步重写StandardExceptionParser类的getDescription方法。Throwable包含堆栈跟踪元素的数组,如果转换为字符串格式,它将成为堆栈跟踪,就像我们在日志中看到的那样。

代码语言:javascript
复制
    public class AnalyticsExceptionParser extends StandardExceptionParser {

    public AnalyticsExceptionParser(Context context, Collection<String> additionalPackages) {
        super(context, additionalPackages);
    }

    @Override
    protected String getDescription(Throwable cause,
        StackTraceElement element, String threadName) {

        StringBuilder descriptionBuilder = new StringBuilder();
        final Writer writer = new StringWriter();
        final PrintWriter printWriter = new PrintWriter(writer);
        cause.printStackTrace(printWriter);
        descriptionBuilder.append(writer.toString());
        printWriter.close();

        return descriptionBuilder.toString();
    }
}

最后,将您的AnalyticsExceptionParser提供给一个ExceptionReporter实例。

代码语言:javascript
复制
    public class MyApplication extends Application {

        @Override
        public void onCreate() {
        ...

            ExceptionReporter reporter = new ExceptionReporter(getTracker(), Thread.getDefaultUncaughtExceptionHandler(), this);
            reporter.setExceptionParser(new AnalyticsExceptionParser(this, packages));
            Thread.setDefaultUncaughtExceptionHandler(reporter);
        }
    }

就是这样。在GA控制台上的Behavior > crash and Exception中查看崩溃报告。

票数 4
EN

Stack Overflow用户

发布于 2015-03-19 20:40:08

您可以覆盖主线程使用的ExceptionParser来调整它,以报告完整的堆栈跟踪:

代码语言:javascript
复制
final Thread.UncaughtExceptionHandler uncaughtExceptionHandler =
        Thread.getDefaultUncaughtExceptionHandler();
if (uncaughtExceptionHandler instanceof ExceptionReporter) {
    ExceptionReporter exceptionReporter = (ExceptionReporter) uncaughtExceptionHandler;
    exceptionReporter.setExceptionParser(new ExceptionParser() {
        @Override
        public String getDescription(String s, Throwable throwable) {
            return "Thread: " + s + ", Stacktrace: " + ExceptionUtils.getStackTrace(throwable);
        }
    });
}

将其放在实例化Google Analytics实例的位置。我使用的ExceptionUtils类来自apache的common-lang3库。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28827838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档