it-swarm.com.de

Bericht über Ausnahmen von Google Analytics analytics.js Ausnahmeverfolgung

Google Universal Analytics hat eine Ausnahme vom Typ - Treffer

ga('send', 'exception', {
  'exDescription': 'DatabaseError'
});

Ich hatte erwartet, dass ich einfach zur Google Analytics-Konsole gehen und einen Exeptionsbericht auf derselben Ebene wie "Ereignisse" finden kann. Es ist jedoch nirgends zu sehen.

Die Android- und iOS-APIs sagen Crash and exception data is available primarily in the Crash and Exceptions report, aber ich kann keinen Bericht mit diesem Namen finden.

69
Simon_Weaver

Herausgefunden. Ich bin nicht sicher, warum sie dies nicht zu einem eingebauten Bericht machen, aber vielleicht eines Tages.

Ich habe ein benutzerdefiniertes Widget in einem Dashboard mit Exception Description für die Dimension und "Crashes" für die Metrik erstellt:

enter image description here

Was gibt mir einen Bericht wie folgt:

enter image description here

Sie können auch auf die Registerkarte Customization gehen und einen benutzerdefinierten Bericht erstellen, um eine Fehlertabelle zu erhalten, und diese dann Ihrem Dashboard hinzufügen.

enter image description here

Wird mit diesem globalen Ausnahmehandler verwendet

if (typeof window.onerror == "object")
{
    window.onerror = function (err, url, line)
    {
        if (ga) 
        {
           ga('send', 'exception', {
               'exDescription': line + " " + err
           });
        }
    };
}

Sie können diesen Handler an beliebiger Stelle in die Initialisierung Ihres Javascript einfügen - was davon abhängt, wie Sie alle Ihre JS-Dateien konfiguriert haben. Alternativ können Sie es einfach in ein <script>-Tag oben in Ihrem html-Body-Tag einfügen.

110
Simon_Weaver

Ich habe die Anleitung von Simon_Weaver zur Erstellung eines benutzerdefinierten Berichts einige Schritte weiter verwendet und einen ziemlich vollständigen benutzerdefinierten Google Analytics-Ausnahmenbericht erstellt. Ich dachte, es lohnt sich vielleicht, es zu teilen, also habe ich es in die GA "Solutions Gallery" hochgeladen. 

Meine Vorlage: Google Analytics-Ausnahmenbericht

Hier ist ein Bild des Endergebnisses:

 https://imgur.com/a/1UYIzrZ

36
rwdsco

Ich wollte nur ein wenig auf die hervorragende Antwort von @Simon_Weaver eingehen, um Fehlerberichte mit ein paar zusätzlichen Details zu liefern: 

  • Stellen Sie sicher, dass ga() definiert ist, bevor Sie versuchen, es aufzurufen (da ein Fehler ausgelöst werden könnte, bevor die Analytics-Bibliothek geladen wird).
  • Log Exception-Zeilennummern und Spaltenindex in den Analytics-Berichten (auch wenn der in der Produktion verwendete minimierte JavaScript-Code möglicherweise schwer lesbar ist).
  • Führen Sie einen zuvor definierten window.onerror-Rückruf aus.
/**
 * 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!');

Edit: Wie @Simon_Weaver ordnungsgemäß festgestellt hat, verfügt Google Analytics jetzt über eine Dokumentation zum Exception-Tracking (auf die ich in meiner ursprünglichen Antwort hätte verlinken sollen - sorry, Anfängerfehler!):

6

Das ist, was ich mir ausgedacht habe, damit Sie den Code nicht überall einfügen müssen. Fügen Sie einfach new ErrorHandler(); zu jeder .js-Datei hinzu. Dies wurde für eine Chrome-Erweiterung durchgeführt, sollte aber an jedem Ort funktionieren, denke ich. Ich implementiere das eigentliche ga () - Zeug in einer separaten Datei (daher die app.GA), aber Sie könnten es auch hier backen.

/*
 *  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);
                }
            };
        }
    }
}));
1
Michael Updike

Unter Verhalten finden Sie jetzt eine Ansicht "Abstürze und Ausnahmen" (wenn die Eigenschaft in Google Analytics als "mobile App" erstellt wird). 

 Side menu in Google Analytics as of May 2018

0
ajcurtis