Web için kilitlenme raporlarını özelleştirme

Platform seçin: iOS+ Android Web Flutter Unity


Firebase konsolunda (DevOps ve Etkileşim > Crashlytics kontrol paneli) bir sorunu tıklayarak ayrıntılı etkinlik raporu alabilirsiniz. Web uygulamanızda neler olduğunu daha iyi anlamak için bu raporları özelleştirebilir ve telemetri verilerinizin toplanmasını yönetebilirsiniz:

İşlenen istisnaları programatik olarak bildirme

İşlenen istisnaları recordError kullanarak manuel olarak kaydedebilirsiniz. Yönlendirme hataları ve yakalanmamış istisnalar, çerçeve hata sınırlarınız tarafından otomatik olarak yakalanır.

Kullanıcılarınız genelinde hata yaygınlığını ve teşhis özelliklerini nasıl izleyeceğiniz aşağıda açıklanmıştır:

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);
  }
}

Özel anahtar ekleme

Özel meta veri anahtarları, kilitlenmeye yol açan belirli uygulama durumunu veya kullanıcı iş akışını anlamanıza yardımcı olur.

recordError yöntemini çağırırken isteğe bağlı meta veri parametresini kullanarak kullanıcı etkinliklerini, oturum durumlarını ve teşhis ayrıntılarını doğrudan anahtar/değer çifti özel özellikleri olarak günlüğe kaydedebilirsiniz:

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'
});

Bu özel özellikler, istisna raporunda tutulur ve Crashlytics kontrol paneli sorun görünümündeki Keys (Anahtarlar) sekmesinde görünür.

Telemetri kayıtlarını temizlemeyi zorunlu kıl

Web telemetri motoru, pil ömrünü, CPU performansını ve ağ bant genişliğini korumak için günlükleri varsayılan olarak bellek segmentlerine ayırır. Ancak kısa süreli yürütme ortamlarında günlükler, yürütme bağlamı yok edilmeden hemen önce yüklenmelidir.

Sıraya alınan tüm hataları hemen arka uca göndermek için eşzamansız flush komutunu kullanabilirsiniz:

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();
}

Örnekleme hızını yapılandırma

Telemetri hacmini ve maliyetini kontrol etmek için kullanıcı oturumlarınızın bir kısmını örnekliyorsanız örneklemeyi aşağıdaki seçeneklerden birini kullanarak yapılandırabilirsiniz:

1. seçenek (önerilir): Örnekleme hızını Firebase konsolunda yapılandırın.

  1. Firebase konsolunda DevOps & Engagement (DevOps ve Etkileşim) > Crashlytics dashboard (dashboard) bölümüne gidin.

  2. Sayfanın üst kısmındaki açılır seçiciden web uygulamanızı seçin.

  3. Kontrol panelinin sağ üst köşesindeki Örneklemeyi yapılandır'ı tıklayın.

  4. İstemcilerden toplanan etkinliklerin ve oturumların yüzdesini kontrol etmek için Örnekleme hızı yüzdesini (0% ile 100% arasında) ayarlayın.

2. seçenek: Firebase Telemetry Admin API'yi kullanarak örnekleme hızını ayarlama

Firebase uygulamalarınızın telemetri toplama ayarlarını yönetmek için Firebase Telemetry Admin API'yi (firebasetelemetryadmin.googleapis.com/v1alpha) kullanabilirsiniz.

  1. Terminalinizde aşağıdaki gerekli değişkenleri yapılandırın:

    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 değerinizi bulun ve terminalinizde değişken olarak yapılandırın:

    Telemetri ayarları Config kaynağı kullanılarak yönetilir. Bu nedenle, web uygulamanız için belirli bir CONFIG_NAME bulmanız gerekir.

    1. Projenizdeki yapılandırmaları listeleyin ve FIREBASE_APP_ID ile filtreleyin. curl -G ve --data-urlencode işaretleri, AIP-160 filtre dizesinin doğru şekilde URL kodlamalı olmasını sağlar:

      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 yanıtında uygulamanızın name alanını (projects/PROJECT_ID/locations/LOCATION/configs/<CONFIG_ID>) bulun ve ardından bunu CONFIG_NAME değişkeniniz olarak ayarlayın:

      CONFIG_NAME="CONFIG_NAME"
      
  3. Örnekleme hızını ayarlayın:

    Örnekleme hızını ayarlamak için PATCH yöntemini kullanarak sampling_rate alanını güncelleyin. Sorgu parametrelerinde updateMask=sampling_rate değerini belirtmeniz gerekir. Örnekleme hızı, toplanacak oturumların yüzdesini temsil eden bir çift değerdir (ör. %25 için 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"
    

Telemetri verilerinin toplanmasını devre dışı bırakma veya etkinleştirme

Web uygulamanız için Crashlytics kurulumu yaptığınızda telemetri verilerinin toplanması varsayılan olarak etkinleştirilir. Crashlytics SDK'sını yükledikten sonra telemetri verilerinin toplanmasını dinamik olarak devre dışı bırakmanız veya yeniden etkinleştirmeniz gerekirse Firebase Telemetry Admin API (firebasetelemetryadmin.googleapis.com/v1alpha) ile toplama uç noktalarını yönetebilirsiniz.

Telemetriyi devre dışı bırakmadan veya etkinleştirmeden önce aşağıdaki değişkenleri ayarlamanız gerekir:

  1. Terminalinizde aşağıdaki gerekli değişkenleri yapılandırın:

    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 değerinizi bulun ve terminalinizde değişken olarak yapılandırın:

    Telemetri ayarları Config kaynağı kullanılarak yönetilir. Bu nedenle, web uygulamanız için belirli bir CONFIG_NAME bulmanız gerekir.

    1. Projenizdeki yapılandırmaları listeleyin ve FIREBASE_APP_ID ile filtreleyin. curl -G ve --data-urlencode işaretleri, AIP-160 filtre dizesinin doğru şekilde URL kodlamalı olmasını sağlar:

      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 yanıtında uygulamanızın name alanını (projects/PROJECT_ID/locations/LOCATION/configs/<CONFIG_ID>) bulun ve ardından bunu CONFIG_NAME değişkeniniz olarak ayarlayın:

      CONFIG_NAME="CONFIG_NAME"
      

Telemetri verilerinin toplanmasını devre dışı bırakma

Telemetri verilerinin toplanmasını devre dışı bırakmak için :disable özel yöntemini kullanın:

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

Telemetri verilerinin toplanmasını yeniden etkinleştirme

Telemetri verilerinin toplanmasını yeniden etkinleştirmek için :enable yöntemini çağırın:

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