वेब के लिए, क्रैश रिपोर्ट को पसंद के मुताबिक बनाना

प्लैटफ़ॉर्म चुनें: iOS+ Android वेब Flutter Unity


Firebase कंसोल (DevOps और यूज़र ऐक्टिविटी > Crashlytics डैशबोर्ड) में, किसी समस्या पर क्लिक करके इवेंट की ज़्यादा जानकारी वाली रिपोर्ट देखी जा सकती है. इन रिपोर्ट को अपनी ज़रूरत के मुताबिक बनाया जा सकता है. साथ ही, टेलीमेट्री कलेक्शन को मैनेज किया जा सकता है, ताकि आपको यह समझने में मदद मिल सके कि आपके वेब ऐप्लिकेशन में क्या हो रहा है:

प्रोग्राम के हिसाब से, हैंडल किए गए अपवादों की शिकायत करना

recordError का इस्तेमाल करके, हैंडल किए गए अपवादों को मैन्युअल तरीके से रिकॉर्ड किया जा सकता है. राउटिंग से जुड़ी गड़बड़ियां और अनकैप्चर किए गए अपवाद, आपके फ़्रेमवर्क की गड़बड़ी की सीमाओं से अपने-आप कैप्चर हो जाते हैं.

अपने उपयोगकर्ताओं के लिए, गड़बड़ी की मौजूदगी और गड़बड़ी की जानकारी देने वाले एट्रिब्यूट को ट्रैक करने का तरीका यहां बताया गया है:

import { recordError, getCrashlytics } from '@firebase/crashlytics';
import { app } from './lib/firebase';

const crashlytics = getCrashlytics(app);

async function submitPaymentForm() {
  try {
    await api.processTransaction();
  } catch (error) {
    // Manually record handled exceptions with diagnostic context
    recordError(crashlytics, error, {
      userTier: 'Premium Gold',
      checkoutStage: 'BillingAddressVerification',
      transactionCode: 'tx_8412_err',
      retryAttempts: 2
    });
    showFallbackBanner(error);
  }
}

कस्टम बटन जोड़ना

कस्टम मेटाडेटा कुंजियों की मदद से, ऐप्लिकेशन के क्रैश होने से पहले की स्थिति या उपयोगकर्ता के वर्कफ़्लो को समझा जा सकता है.

recordError को कॉल करते समय, वैकल्पिक मेटाडेटा पैरामीटर का इस्तेमाल करके, उपयोगकर्ता गतिविधि, सेशन की स्थितियों, और गड़बड़ी की जानकारी को सीधे तौर पर की-वैल्यू कस्टम एट्रिब्यूट के तौर पर लॉग किया जा सकता है:

import { recordError, getCrashlytics } from '@firebase/crashlytics';
import { app } from './lib/firebase'; // Shared initialization script

const crashlytics = getCrashlytics(app);

// Pass custom key-value diagnostic metadata within recordError
recordError(crashlytics, error, {
  userTier: 'Premium Gold',
  checkoutStage: 'BillingAddressVerification',
  transactionCode: 'tx_8412_err',
  retryAttempts: 2,
  breadcrumb: 'User opened shopping cart',
  lastAction: 'Click Checkout Button'
});

इन कस्टम एट्रिब्यूट को अपवाद रिपोर्ट में रखा जाता है. साथ ही, ये Crashlytics डैशबोर्ड के समस्या व्यू में, कुंजियां टैब में दिखते हैं.

टेलीमेट्री रिकॉर्ड को फ़ोर्स फ़्लश करना

डिफ़ॉल्ट रूप से, वेब टेलीमेट्री इंजन, लॉग को मेमोरी सेगमेंट में बैच करता है. इससे बैटरी लाइफ़, सीपीयू की परफ़ॉर्मेंस, और नेटवर्क बैंडविड्थ को सुरक्षित रखा जा सकता है. हालांकि, कम समय तक चलने वाले एक्ज़ीक्यूशन एनवायरमेंट के लिए, एक्ज़ीक्यूशन कॉन्टेक्स्ट के खत्म होने से पहले लॉग अपलोड किए जाने चाहिए.

एसिंक्रोनस flush कमांड का इस्तेमाल करके, सूची में मौजूद सभी गड़बड़ियों को तुरंत बैकएंड पर भेजा जा सकता है:

import { recordError, flush, getCrashlytics } from '@firebase/crashlytics';
import { app } from './lib/firebase';

const crashlytics = getCrashlytics(app);

async function handleApplicationCrash(error: Error) {
  // Capture the error with immediate priority
  recordError(crashlytics, error, { priority: 'IMMEDIATE' });

  // Force an immediate upload before the process terminates or reloads
  await flush(crashlytics);

  // Safe to terminate or refresh the current execution context
  window.location.reload();
}

सैंपलिंग रेट कॉन्फ़िगर करना

अगर आपको टेलीमेट्री डेटा के वॉल्यूम और लागत को कंट्रोल करने के लिए, अपने उपयोगकर्ता सेशन के कुछ हिस्से का सैंपल लेना है, तो इनमें से किसी भी विकल्प का इस्तेमाल करके सैंपलिंग को कॉन्फ़िगर किया जा सकता है:

पहला विकल्प (सुझाया गया): Firebase कंसोल में सैंपलिंग रेट कॉन्फ़िगर करें

  1. Firebase कंसोल में, DevOps और यूज़र ऐक्टिविटी > Crashlytics डैशबोर्ड पर जाएं.

  2. पेज पर सबसे ऊपर मौजूद ड्रॉप-डाउन सिलेक्टर से अपना वेब ऐप्लिकेशन चुनें.

  3. डैशबोर्ड के सबसे ऊपर दाएं कोने में मौजूद, सैंपलिंग कॉन्फ़िगर करें पर क्लिक करें.

  4. क्लाइंट से इकट्ठा किए गए इवेंट और सेशन के प्रतिशत को कंट्रोल करने के लिए, सैंपलिंग रेट का प्रतिशत (0% और 100% के बीच) सेट करें.

दूसरा विकल्प: Firebase Telemetry Admin API का इस्तेमाल करके सैंपलिंग रेट सेट करना

Firebase Telemetry Admin API (firebasetelemetryadmin.googleapis.com/v1alpha) का इस्तेमाल करके, अपने Firebase ऐप्लिकेशन के लिए टेलीमेट्री कलेक्शन की सेटिंग मैनेज की जा सकती हैं.

  1. अपने टर्मिनल में, ज़रूरी वैरिएबल कॉन्फ़िगर करें:

    PROJECT_ID="PROJECT_ID"
    LOCATION="LOCATION"  # for example, global
    APP_ID="FIREBASE_APP_ID"  # for example, 1:1234567890:web:abcdef123456
    TOKEN=$(gcloud auth application-default print-access-token)
    
  2. अपना CONFIG_NAME ढूंढें और फिर उसे अपने टर्मिनल में वैरिएबल के तौर पर कॉन्फ़िगर करें:

    टेलीमेट्री सेटिंग को Config रिसॉर्स का इस्तेमाल करके मैनेज किया जाता है. इसलिए, आपको अपने वेब ऐप्लिकेशन के लिए, CONFIG_NAME ढूंढना होगा.

    1. अपने प्रोजेक्ट में मौजूद कॉन्फ़िगरेशन की सूची बनाएं और उन्हें FIREBASE_APP_ID के हिसाब से फ़िल्टर करें. curl -G और --data-urlencode फ़्लैग यह पक्का करते हैं कि AIP-160 फ़िल्टर स्ट्रिंग को यूआरएल के हिसाब से सही तरीके से कोड किया गया है:

      curl -G \
        -H "Authorization: Bearer $TOKEN" \
        --data-urlencode "filter=app_id=\"${APP_ID}\"" \
        "https://firebasetelemetryadmin.googleapis.com/v1alpha/projects/${PROJECT_ID}/locations/${LOCATION}/configs"
      
    2. JSON रिस्पॉन्स में, अपने ऐप्लिकेशन (projects/PROJECT_ID/locations/LOCATION/configs/<CONFIG_ID>) के लिए name फ़ील्ड ढूंढें. इसके बाद, इसे अपने CONFIG_NAME वैरिएबल के तौर पर सेट करें:

      CONFIG_NAME="CONFIG_NAME"
      
  3. सैंपलिंग रेट सेट करें:

    सैंपलिंग रेट में बदलाव करने के लिए, PATCH तरीके का इस्तेमाल करके sampling_rate फ़ील्ड को अपडेट करें. आपको क्वेरी पैरामीटर में updateMask=sampling_rate की जानकारी देनी होगी. सैंपलिंग रेट, एक डबल वैल्यू होती है. यह इकट्ठा किए जाने वाले सेशन का प्रतिशत दिखाती है. उदाहरण के लिए, 25% के लिए 0.25:

    # Example: Set sampling rate to 25%
    curl -X PATCH \
      -H "Authorization: Bearer $TOKEN" \
      -H "Content-Type: application/json" \
      -d "{
        \"sampling_rate\": 0.25,
        \"app_id\": \"${APP_ID}\"
      }" \
      "https://firebasetelemetryadmin.googleapis.com/v1alpha/${CONFIG_NAME}?updateMask=sampling_rate"
    

टेलीमेट्री इकट्ठा करने की सुविधा को बंद या चालू करना

अपने वेब ऐप्लिकेशन के लिए Crashlytics सेट अप करने पर, टेलीमेट्री कलेक्शन की सुविधा डिफ़ॉल्ट रूप से चालू हो जाती है. अगर आपको Crashlytics SDK टूल इंस्टॉल करने के बाद, टेलीमेट्री कलेक्शन की सुविधा को डाइनैमिक तौर पर बंद या फिर से चालू करना है, तो Firebase Telemetry Admin API (firebasetelemetryadmin.googleapis.com/v1alpha) का इस्तेमाल करके, कलेक्शन एंडपॉइंट मैनेज किए जा सकते हैं.

टेलीमेट्री को बंद या चालू करने से पहले, आपको ये वैरिएबल सेट करने होंगे:

  1. अपने टर्मिनल में, ज़रूरी वैरिएबल कॉन्फ़िगर करें:

    PROJECT_ID="PROJECT_ID"
    LOCATION="LOCATION"  # for example, global
    APP_ID="FIREBASE_APP_ID"  # for example, 1:1234567890:web:abcdef123456
    TOKEN=$(gcloud auth application-default print-access-token)
    
  2. अपना CONFIG_NAME ढूंढें और फिर उसे अपने टर्मिनल में वैरिएबल के तौर पर कॉन्फ़िगर करें:

    टेलीमेट्री सेटिंग को Config रिसॉर्स का इस्तेमाल करके मैनेज किया जाता है. इसलिए, आपको अपने वेब ऐप्लिकेशन के लिए, CONFIG_NAME ढूंढना होगा.

    1. अपने प्रोजेक्ट में मौजूद कॉन्फ़िगरेशन की सूची बनाएं और उन्हें FIREBASE_APP_ID के हिसाब से फ़िल्टर करें. curl -G और --data-urlencode फ़्लैग यह पक्का करते हैं कि AIP-160 फ़िल्टर स्ट्रिंग को यूआरएल के हिसाब से सही तरीके से कोड किया गया है:

      curl -G \
        -H "Authorization: Bearer $TOKEN" \
        --data-urlencode "filter=app_id=\"${APP_ID}\"" \
        "https://firebasetelemetryadmin.googleapis.com/v1alpha/projects/${PROJECT_ID}/locations/${LOCATION}/configs"
      
    2. JSON रिस्पॉन्स में, अपने ऐप्लिकेशन (projects/PROJECT_ID/locations/LOCATION/configs/<CONFIG_ID>) के लिए name फ़ील्ड ढूंढें. इसके बाद, इसे अपने CONFIG_NAME वैरिएबल के तौर पर सेट करें:

      CONFIG_NAME="CONFIG_NAME"
      

टेलीमेट्री डेटा इकट्ठा करने की सुविधा बंद करना

टेलीमेट्री कलेक्शन को बंद करने के लिए, :disable कस्टम तरीके का इस्तेमाल करें:

curl -X POST \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}' \
  "https://firebasetelemetryadmin.googleapis.com/v1alpha/${CONFIG_NAME}:disable"

टेलीमेट्री कलेक्शन को फिर से चालू करना

टेलीमेट्री कलेक्शन को फिर से चालू करने के लिए, :enable तरीके को कॉल करें:

curl -X POST \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}' \
  "https://firebasetelemetryadmin.googleapis.com/v1alpha/${CONFIG_NAME}:enable"