在Google Analytics中记录javascript错误

时间:2016-02-25 11:28:27

标签: javascript jquery error-handling google-analytics

我正在尝试获取有关我的网络应用程序中发生的JavaScript错误的信息,并使用Google Analytics中的事件记录这些错误。我这样做如下:

$(document).ready(function() {
    var sendAnalyticsEvent = function(category, action, label) {
        if (window.ga) {
            window.ga('send', 'event', category, action, label);
        }
    };

    window.onerror = function(error) {
        try {
            sendAnalyticsEvent('JavaScript Error', error.message, error.filename + ':  ' + error.lineno);
        } catch(e) {
        }
    };

    $(document).ajaxError(function(e, request, settings) {
        try {
            sendAnalyticsEvent('Ajax Error', settings.url, e.result);
        } catch(e) {
        }
    });
});

这是成功将事件触发到Google Analytics,例如:

Google Analytics

但是,当我点击“JavaScript Error”时,它不会向我提供任何其他信息,例如应该使用上述代码发送的错误消息。

为什么这不会发送错误消息以及错误?

修改

事实证明我正在声明window.onerror函数错误。以下工作正常:

window.onerror = function (message, source, lineno, colno, error) {
    try {
        sendAnalyticsEvent('js error', message, source + ':  ' + lineno);
    } catch(e) {
    }
};

2 个答案:

答案 0 :(得分:2)

您将错误消息作为事件标签维度发送,但该报告正在查看“事件类别”维度。如果单击“事件标签”,则应该看到它。

话虽如此,为什么不使用exception tracking代替事件跟踪来衡量呢?完全针对此用例构建了异常跟踪。

答案 1 :(得分:1)

在你的情况下,问题是在window.onerror()内声明$(document).ready(),它只会在jQuery初始化后捕获错误。你需要尽早申报。

将以下内容添加到<head>

<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
    (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','_watchdog');

_watchdog('create', 'UA-xxxxxxx-x', 'auto');

window.onerror = function(msg) {
  _watchdog('send', 'exception', { 'exDescription': msg });

  _watchdog('send', 'event', {
    eventCategory: 'javascript',
    eventAction: 'error',
    eventLabel: msg,
    transport: 'beacon'
  });
}
</script>

之后,您将开始在“Javascript”类别下接收“错误”类型的活动。

不幸的是,在Event Tracking中,您的错误消息将为limited by 500 Bytes,因此您将无法正确理解问题,但是您会知道出现了问题:)

对于mo详细错误,请使用Exception Tracking