Отчет об исключениях из отслеживания исключений Google Analytics analytics.js
Google Universal Analytics имеет тип исключения для удалений
ga('send', 'exception', {
'exDescription': 'DatabaseError'
});
Я ожидал, что смогу просто зайти в консоль Google Analytics и найти отчет об исключении на том же уровне, что и "события", однако его нигде не видно.
API Android и iOS говорят Crash and exception data is available primarily in the Crash and Exceptions report
, но я не могу найти отчет с этим именем.
Ответы
Ответ 1
Выяснил это. Я не уверен, почему они не делают это встроенным отчетом, но, возможно, когда-нибудь.
Я сделал собственный виджет на панели управления с Exception Description
для измерения и "Сбои" для метрики:
![enter image description here]()
Что дает мне такой отчет:
![enter image description here]()
Вы также можете перейти на вкладку Customization
и создать собственный отчет, чтобы дать вам таблицу ошибок, а затем добавить его в свою панель.
![enter image description here]()
Используется с этим глобальным обработчиком исключений
if (typeof window.onerror == "object")
{
window.onerror = function (err, url, line)
{
if (ga)
{
ga('send', 'exception', {
'exDescription': line + " " + err
});
}
};
}
Вы можете поместить этот обработчик в любом месте инициализации вашего Javascript - это зависит от того, как вы настроили все ваши файлы JS. Кроме того, вы можете просто поместить его в тег <script>
рядом с тегом тега html.
Ответ 2
Я взял руководство Simon_Weaver для создания пользовательского отчета на несколько шагов дальше и разработал довольно полный отчет об исключениях из Google Analytics. Я полагал, что это может стоить обмена, поэтому я загрузил его в галерею решений GA.
Мой шаблон: Отчет об исключениях для Google Analytics
Ответ 3
Я просто хотел немного расширить на @Simon_Weaver отличный ответ, чтобы предоставить отчеты об ошибках с несколькими дополнительными деталями:
- Убедитесь, что
ga()
определен, прежде чем пытаться вызвать его (поскольку ошибка может быть запущена до загрузки библиотеки Google Analytics).
- Номера строк журнала исключений и индекс столбца в отчетах Analytics (хотя минимальный код JavaScript, используемый в производстве, может быть трудно читать).
- Выполните любой ранее определенный
window.onerror
обратный вызов.
/**
* Send JavaScript error information to Google Analytics.
*
* @param {Window} window A reference to the "window".
* @return {void}
* @author Philippe Sawicki <https://github.com/philsawicki>
*/
(function (window) {
// Retain a reference to the previous global error handler, in case it has been set:
var originalWindowErrorCallback = window.onerror;
/**
* Log any script error to Google Analytics.
*
* Third-party scripts without CORS will only provide "Script Error." as an error message.
*
* @param {String} errorMessage Error message.
* @param {String} url URL where error was raised.
* @param {Number} lineNumber Line number where error was raised.
* @param {Number|undefined} columnNumber Column number for the line where the error occurred.
* @param {Object|undefined} errorObject Error Object.
* @return {Boolean} When the function returns true, this prevents the
* firing of the default event handler.
*/
window.onerror = function customErrorHandler (errorMessage, url, lineNumber, columnNumber, errorObject) {
// Send error details to Google Analytics, if the library is already available:
if (typeof ga === 'function') {
// In case the "errorObject" is available, use its data, else fallback
// on the default "errorMessage" provided:
var exceptionDescription = errorMessage;
if (typeof errorObject !== 'undefined' && typeof errorObject.message !== 'undefined') {
exceptionDescription = errorObject.message;
}
// Format the message to log to Analytics (might also use "errorObject.stack" if defined):
exceptionDescription += ' @ ' + url + ':' + lineNumber + ':' + columnNumber;
ga('send', 'exception', {
'exDescription': exceptionDescription,
'exFatal': false, // Some Error types might be considered as fatal.
'appName': 'Application_Name',
'appVersion': '1.0'
});
}
// If the previous "window.onerror" callback can be called, pass it the data:
if (typeof originalWindowErrorCallback === 'function') {
return originalWindowErrorCallback(errorMessage, url, lineNumber, columnNumber, errorObject);
}
// Otherwise, Let the default handler run:
return false;
};
})(window);
// Generate an error, for demonstration purposes:
//throw new Error('Crash!');
Изменить: Как уже отмечалось @Simon_Weaver, у Google Analytics теперь есть документация об отслеживании исключений (с которой я должен был ссылаться в своем первоначальном ответе - извините, ошибка новобранец!):
Ответ 4
Это то, что я придумал, поэтому вам не нужно включать код везде. Просто добавьте new ErrorHandler();
в каждый .js файл. Это было сделано для расширения Chrome, но я должен работать где угодно. Я реализую фактический материал ga() в отдельном файле (следовательно, app.GA), но вы также можете испечь его здесь.
/*
* Copyright (c) 2015-2017, Michael A. Updike All rights reserved.
* Licensed under the BSD-3-Clause
* https://opensource.org/licenses/BSD-3-Clause
* https://github.com/opus1269/photo-screen-saver/blob/master/LICENSE.md
*/
// noinspection ThisExpressionReferencesGlobalObjectJS
(function(window, factory) {
window.ExceptionHandler = factory(window);
}(this, function(window) {
'use strict';
return ExceptionHandler;
/**
* Log Exceptions with analytics. Include: new ExceptionHandler();<br />
* at top of every js file
* @constructor
* @alias ExceptionHandler
*/
function ExceptionHandler() {
if (typeof window.onerror === 'object') {
// global error handler
window.onerror = function(message, url, line, col, errObject) {
if (app && app.GA) {
let msg = message;
let stack = null;
if (errObject && errObject.message && errObject.stack) {
msg = errObject.message;
stack = errObject.stack;
}
app.GA.exception(msg, stack);
}
};
}
}
}));
Ответ 5
Simon_Weaver,
Я добавил
if (typeof window.onerror == "object") {
window.onerror = function (err, url, line) {
if (ga) {
ga('send', 'exception', {
'exDescription': line + " " + err
});
}
};
}
и моя страница также генерирует ошибку, но я не могу видеть ее в отчете об исключениях. Получается ли этот отчет об исключении после добавления в аналитику?