ওয়েবের জন্য ক্র্যাশ রিপোর্ট কাস্টমাইজ করা

প্ল্যাটফর্ম বেছে নিন: 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 ফিল্টার স্ট্রিং সঠিকভাবে URL-এনকোড করা হয়েছে:

      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 উত্তরে, আপনার অ্যাপের জন্য name ফিল্ডটি খুঁজুন (projects/PROJECT_ID/locations/LOCATION/configs/<CONFIG_ID>), এবং তারপর এটিকে আপনার CONFIG_NAME ভেরিয়েবল হিসেবে সেট করুন:

      CONFIG_NAME="CONFIG_NAME"
      
  3. স্যাম্পলিং রেট সেট করুন:

    স্যাম্পলিং রেট অ্যাডজাস্ট করতে, PATCH পদ্ধতি ব্যবহার করে sampling_rate ফিল্ড আপডেট করুন। আপনাকে কোয়েরি প্যারামিটারে updateMask=sampling_rate উল্লেখ করতে হবে। স্যাম্পলিং রেট হল একটি ডবল ভ্যালু যা সেশন সংগ্রহের শতাংশকে প্রতিনিধিত্ব করে (যেমন, ২৫%-এর জন্য 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 ফিল্টার স্ট্রিং সঠিকভাবে URL-এনকোড করা হয়েছে:

      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 উত্তরে, আপনার অ্যাপের জন্য name ফিল্ডটি খুঁজুন (projects/PROJECT_ID/locations/LOCATION/configs/<CONFIG_ID>), এবং তারপর এটিকে আপনার 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"