Absturzberichte für das Web anpassen

Plattform auswählen: iOS+ Android Web Flutter Unity


In der Firebase-Konsole (DevOps & Engagement > Crashlytics-Dashboard) können Sie auf ein Problem klicken, um einen detaillierten Ereignisbericht zu erhalten. Sie können diese Berichte anpassen und die Telemetrieerfassung verwalten, um besser zu verstehen, was in Ihrer Webanwendung passiert:

Behandelte Ausnahmen programmatisch melden

Sie können behandelte Ausnahmen manuell mit recordError aufzeichnen. Routingfehler und nicht abgefangene Ausnahmen werden automatisch von den Fehlergrenzen Ihres Frameworks erfasst.

So kannst du die Fehlerhäufigkeit und Diagnoseattribute für deine Nutzer im Blick behalten:

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

Benutzerdefinierte Schlüssel hinzufügen

Mit benutzerdefinierten Metadatenschlüsseln können Sie den spezifischen App-Status oder Nutzerworkflow ermitteln, der zu einem Absturz geführt hat.

Sie können Nutzeraktivitäten, Sitzungsstatus und Diagnosedetails direkt als benutzerdefinierte Schlüssel/Wert-Attribute protokollieren. Verwenden Sie dazu den optionalen Metadatenparameter, wenn Sie recordError aufrufen:

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

Diese benutzerdefinierten Attribute werden im Ausnahmebericht beibehalten und auf dem Tab Schlüssel in der Problemansicht des Crashlytics-Dashboards angezeigt.

Löschen von Telemetriedatensätzen erzwingen

Standardmäßig werden Logs von der Web-Telemetrie-Engine in Speichersegmenten zusammengefasst, um die Akkulaufzeit, die CPU-Leistung und die Netzwerkbandbreite zu schonen. In kurzlebigen Ausführungsumgebungen müssen Logs jedoch sofort hochgeladen werden, bevor der Ausführungskontext gelöscht wird.

Mit dem asynchronen Befehl flush können Sie alle in der Warteschlange befindlichen Fehler sofort an das Backend senden:

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

Abtastrate konfigurieren

Wenn Sie einen Teil Ihrer Nutzersitzungen stichprobenartig erfassen, um das Telemetrie-Volumen und die Kosten zu kontrollieren, können Sie die Stichprobenerhebung mit einer der folgenden Optionen konfigurieren:

Option 1 (empfohlen): Abtastrate in der Firebase-Konsole konfigurieren

  1. Rufen Sie in der Firebase Console das Dashboard DevOps & Engagement > Crashlytics auf.

  2. Wählen Sie oben auf der Seite im Drop-down-Menü Ihre Web-App aus.

  3. Klicken Sie rechts oben im Dashboard auf Stichprobenerhebung konfigurieren.

  4. Legen Sie den Prozentsatz für die Abtastrate (zwischen 0% und 100%) fest, um den Prozentsatz der Ereignisse und Sitzungen zu steuern, die von Clients erfasst werden.

Option 2: Abtastrate mit der Firebase Telemetry Admin API festlegen

Mit der Firebase Telemetry Admin API (firebasetelemetryadmin.googleapis.com/v1alpha) können Sie die Einstellungen für die Telemetrieerfassung für Ihre Firebase-Apps verwalten.

  1. Konfigurieren Sie die folgenden erforderlichen Variablen in Ihrem Terminal:

    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. Suchen Sie Ihre CONFIG_NAME und konfigurieren Sie sie dann als Variable in Ihrem Terminal:

    Telemetrieeinstellungen werden mit einer Config-Ressource verwaltet. Sie müssen also die spezifische CONFIG_NAME für Ihre Webanwendung finden.

    1. Listen Sie die Konfigurationen in Ihrem Projekt auf und filtern Sie nach Ihrem FIREBASE_APP_ID. Mit den Flags curl -G und --data-urlencode wird der AIP-160-Filterstring korrekt URL-codiert:

      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. Suchen Sie in der JSON-Antwort das Feld name für Ihre Anwendung (projects/PROJECT_ID/locations/LOCATION/configs/<CONFIG_ID>) und legen Sie es als Variable CONFIG_NAME fest:

      CONFIG_NAME="CONFIG_NAME"
      
  3. Legen Sie die Abtastrate fest:

    Wenn Sie die Abtastrate anpassen möchten, verwenden Sie die Methode PATCH, um das Feld sampling_rate zu aktualisieren. Sie müssen updateMask=sampling_rate in den Suchparametern angeben. Die Abtastrate ist ein Double-Wert, der den Prozentsatz der zu erfassenden Sitzungen darstellt (z. B. 0.25 für 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"
    

Erfassung von Telemetriedaten deaktivieren oder aktivieren

Standardmäßig ist die Telemetrieerfassung aktiviert, wenn Sie Crashlytics für Ihre Web-App einrichten. Wenn Sie die Telemetrieerfassung nach der Installation des Crashlytics SDK dynamisch deaktivieren oder wieder aktivieren müssen, können Sie die Endpunkte der Erfassung mit der Firebase Telemetry Admin API (firebasetelemetryadmin.googleapis.com/v1alpha) verwalten.

Bevor Sie die Telemetrie deaktivieren oder aktivieren können, müssen Sie die folgenden Variablen festlegen:

  1. Konfigurieren Sie die folgenden erforderlichen Variablen in Ihrem Terminal:

    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. Suchen Sie Ihre CONFIG_NAME und konfigurieren Sie sie dann als Variable in Ihrem Terminal:

    Telemetrieeinstellungen werden mit einer Config-Ressource verwaltet. Sie müssen also die spezifische CONFIG_NAME für Ihre Webanwendung finden.

    1. Listen Sie die Konfigurationen in Ihrem Projekt auf und filtern Sie nach Ihrem FIREBASE_APP_ID. Mit den Flags curl -G und --data-urlencode wird der AIP-160-Filterstring korrekt URL-codiert:

      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. Suchen Sie in der JSON-Antwort das Feld name für Ihre Anwendung (projects/PROJECT_ID/locations/LOCATION/configs/<CONFIG_ID>) und legen Sie es als Variable CONFIG_NAME fest:

      CONFIG_NAME="CONFIG_NAME"
      

Telemetrieerfassung deaktivieren

Verwenden Sie die benutzerdefinierte Methode :disable, um die Telemetrieerfassung zu deaktivieren:

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

Telemetrieerfassung wieder aktivieren

Rufen Sie die Methode :enable auf, um die Telemetrieerfassung wieder zu aktivieren:

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