Google Analytics Analytics.js अपवाद ट्रैकिंग से अपवादों की रिपोर्ट करें


82

Google यूनिवर्सल एनालिटिक्स में एक हिट प्रकार का अपवाद है

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

मैं उम्मीद कर रहा था कि मैं केवल Google Analytics कंसोल पर जा सकता हूं और 'घटनाओं' के समान स्तर पर एक एक्साईशन रिपोर्ट पा सकता हूं, हालांकि यह कहीं नहीं देखा जा सकता है।

Android और iOS APIs कहते हैं, Crash and exception data is available primarily in the Crash and Exceptions reportलेकिन मुझे उस नाम से कोई रिपोर्ट नहीं मिली।

जवाबों:


129

पता लगा लिया। मुझे यकीन नहीं है कि वे इसे एक रिपोर्ट में निर्मित नहीं करते हैं, लेकिन शायद किसी दिन।

मैंने Exception Descriptionआयाम के लिए डैशबोर्ड में एक कस्टम विजेट बनाया और मीट्रिक के लिए 'क्रैश':

यहाँ छवि विवरण दर्ज करें

जो मुझे इस तरह से एक रिपोर्ट देता है:

यहाँ छवि विवरण दर्ज करें

आप Customizationटैब पर भी जा सकते हैं और आपको त्रुटियों की तालिका देने के लिए एक कस्टम रिपोर्ट बना सकते हैं, और फिर इसे अपने डैशबोर्ड में जोड़ सकते हैं।

यहाँ छवि विवरण दर्ज करें

इस वैश्विक अपवाद हैंडलर के साथ प्रयोग किया जाता है

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

आप इस हैंडलर को अपनी जावास्क्रिप्ट के आरंभीकरण में कहीं भी रख सकते हैं - जो इस बात पर निर्भर करेगा कि आपकी सभी जेएस फाइलें कैसे कॉन्फ़िगर की गई हैं। वैकल्पिक रूप से आप इसे <script>अपने html बॉडी टैग के शीर्ष के पास टैग के अंदर रख सकते हैं ।



3
'क्रैश' मीट्रिक मेरे लिए काम नहीं करती थी। लेकिन इस कस्टम रिपोर्ट में imgur.com/a/Ux57LEE का उपयोग किया गया है जो मैं gtag
Jayesh

2
इसके अलावा यह वास्तविक समय की रिपोर्ट में प्रकट नहीं होता है। अफ़सोस की बात है।
स्टेव्मो

5
ओह, यह सवाल चार साल पहले पूछा गया था ... उन्होंने अभी तक इसमें सुधार नहीं किया है :(
स्टीवेमा

1
मेट्रिक्स के तहत, क्रैश मेरे लिए कोई डेटा नहीं दिखा रहा था। मुझे एक्सेप्शन चुनना था।
पंकज

42

मैंने कुछ कदम आगे एक कस्टम रिपोर्ट बनाने के लिए साइमन_वेवर गाइड लिया और एक पूरी तरह से Google Analytics कस्टम अपवाद रिपोर्ट बनाई। मुझे लगा कि यह साझा करने लायक हो सकता है, इसलिए मैंने इसे GA "समाधान गैलरी" पर अपलोड किया।

मेरा टेम्प्लेट: Google Analytics अपवाद रिपोर्ट

यहाँ अंतिम परिणाम की एक तस्वीर है:

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


3
अपवाद ट्रैकिंग के लिए यह मेरी पसंदीदा रिपोर्ट बन गई है, और मैं अत्यधिक अनुशंसा करता हूं कि अन्य इसे एक का चयन करें (जब तक कि Google Analytics एक अंतर्निहित रिपोर्ट प्रदान नहीं करता है)।
ग्रेटब्लैक्स

यदि आपको कभी यहां कुछ स्क्रीनशॉट जोड़ने का मौका मिलता है कि आपका टेम्पलेट कैसे काम करता है तो यह बहुत अच्छा होगा।
साइमन_वेवर

@Simon_Weaver मैंने अभी इसकी कोशिश की और आगे बढ़ गया और जोड़ा कि यह कैसा दिखता है। वास्तविक अपवाद विवरणों को फ़िल्टर किया गया लेकिन वे दिखाई नहीं देते हैं। उम्मीद है कि मदद करता है
अगस्त

7

मैं कुछ अतिरिक्त विवरणों के साथ त्रुटि रिपोर्ट प्रदान करने के लिए @Simon_Weaver के उत्कृष्ट उत्तर पर थोड़ा विस्तार करना चाहता था:

  • सुनिश्चित करें कि ga()इसे कॉल करने का प्रयास करने से पहले परिभाषित किया गया है (जैसा कि Analytics लाइब्रेरी लोड होने से पहले एक त्रुटि को ट्रिगर किया जा सकता है)।
  • Analytics रिपोर्ट में लॉग एक्सेप्शन लाइन नंबर और कॉलम इंडेक्स (हालांकि उत्पादन में इस्तेमाल किया गया छोटा जावास्क्रिप्ट कोड पढ़ना मुश्किल हो सकता है)।
  • किसी भी पहले से परिभाषित 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 के पास अब अपवाद ट्रैकिंग के बारे में दस्तावेज़ हैं (जिन्हें मुझे अपने मूल उत्तर में लिंक करना चाहिए था - क्षमा करें, धोखेबाज़ गलती!)


idk अगर यह वैध है appNameऔर appVersionआपके द्वारा भेजे गए अपवाद ऑब्जेक्ट में है? मेरा मानना ​​है कि आपको यहाँ
अगस्त

1

यह वही है जिसके साथ मैं आया था ताकि आपको हर जगह कोड को शामिल करने की आवश्यकता न हो। बस new ErrorHandler();प्रत्येक .js फ़ाइल में जोड़ें । यह क्रोम एक्सटेंशन के लिए किया गया था, लेकिन मुझे कहीं भी काम करना चाहिए, मुझे लगता है। मैं एक अलग फ़ाइल (इसलिए 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);
                }
            };
        }
    }
}));

ओ माइकल। मेरे पास एक त्वरित प्रश्न है ... मैं इस संरचना की आवश्यकता के बारे में अनिश्चित हूं - फ़ंक्शन को दूसरे पैराम के रूप में क्यों बना रहा हूं, और खिड़की से गुजर रहा है, और फिर मूल फ़ंक्शन लौटा रहा है ?? ऐसा लगता है कि यहां 3 अनावश्यक कदम हैं। या कुछ ऐसा है जो मुझे याद आ रहा है?
Drenai

0

अब आप व्यवहार के तहत "क्रैश और अपवाद" दृश्य पा सकते हैं (यदि संपत्ति Google Analytics में "मोबाइल ऐप" के रूप में बनाई गई है)।

मई 2018 तक Google Analytics में साइड मेनू


मैं इसे अपने GA डैशबोर्ड में नहीं देखता
टेक्नोमेज

@technomage क्या आपकी GA संपत्ति "वेबसाइट" या "मोबाइल ऐप" के रूप में बनाई गई थी?
अजाकर्टिस

यह एक वेबसाइट के रूप में बनाया गया था। मुझे अंततः कच्चा डेटा मिला, लेकिन मुझे इसके लिए एक कस्टम रिपोर्ट का फैशन करना पड़ा।
टेक्नोमेज

मैं मैन्युअल रूप से जीए जावास्क्रिप्ट के माध्यम से "अपवाद" जानकारी भेज रहा हूं।
टेक्नोमेज

ठीक है, यह समझ में आता है कि आप एक ही दृश्य क्यों नहीं देख सकते हैं। स्क्रीनशॉट एक मोबाइल ऐप के रूप में बनाई गई संपत्ति से लिया गया था (मैन्युअल रूप से भेजे गए अपवादों के साथ भी)।
अंजुरटिस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.