Сбор статистики ошибок AngularJS-приложения через Google Analytics

Делается через пользовательские события.
Для сбора ошбок достаточно где-то на странице подключить код аналитики (https://support.google.com/analytics/answer/1009694?hl=en).

Как можно выше на bootstrap-странице (ндексной странице) подключить «инлайновый» скрипт для обработки общих ошибок:

<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 нужно задать обработчик в файле с приложением:

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)
	{
		...

В реальном времени ошибки отображаются здесь (В режиме реального времени → События):
d6c7a771bf44759379df30180965df903cefa37dee
Отчёты за дату можно посмотреть здесь (Поведение → События → Обзор):
d6c7a771bf808e1457fb2080b1519328eccf0e94c7
Полезные ссылки:
http://docs.angularjs.org/api/ng.$exceptionHandler
http://habrahabr.ru/post/149926/
http://habrahabr.ru/company/icontext/blog/93851/

LEAVE A COMMENT