Сбор статистики ошибок AngularJS-приложения через Google Analytics
Делается через пользовательские события.
Для сбора ошбок достаточно где-то на странице подключить код аналитики (https://support.google.com/analytics/answer/1009694?hl=en).
Как можно выше на bootstrap-странице (ндексной странице) подключить «инлайновый» скрипт для обработки общих ошибок:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<script type="text/javascript"> if () { var _gaq = window._gaq || []; window.onerror = function(msg, url, line) { var preventErrorAlert = true; _gaq.push(['_trackEvent', 'JS Error Generic', msg, navigator.userAgent + ' -> ' + url + " : " + line, 0, true]); return preventErrorAlert; }; window.canLogErrors = true; } </script> |
Для обработки ошибок внутри AngularJS нужно задать обработчик в файле с приложением:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
var app = angular.module('MyApp', ['ngRoute']); // override default angular exception handler if can log errors if (window.canLogErrors) { app.factory('$exceptionHandler', function touchExceptionHandler() { return function (exception, cause) { exception = exception || {}; exception.message += ' (caused by "' + cause + '")'; var msg = exception.message || '', eType = typeof exception, stack = exception.stack || ''; _gaq.push(['_trackEvent', 'JS Error: AngularJS', eType + ': ' + msg, navigator.userAgent + ' -> ' + window.location.href + ' -:- ' + stack + " --|-- " + cause, 0, true]); }; }); } app. config(['$routeProvider', function ($routeProvider) { ... |
В реальном времени ошибки отображаются здесь (В режиме реального времени → События):
Отчёты за дату можно посмотреть здесь (Поведение → События → Обзор):
Полезные ссылки:
http://docs.angularjs.org/api/ng.$exceptionHandler
http://habrahabr.ru/post/149926/
http://habrahabr.ru/company/icontext/blog/93851/
Similar Posts
LEAVE A COMMENT
Для отправки комментария вам необходимо авторизоваться.