Personnaliser les rapports d'erreur pour le Web

Sélectionnez une plate-forme : iOS+ Android Web Flutter Unity


Dans la console Firebase (DevOps et engagement > Tableau de bord Crashlytics), vous pouvez cliquer sur un problème pour obtenir un rapport d'événement détaillé. Vous pouvez personnaliser ces rapports et gérer la collecte de données de télémétrie pour mieux comprendre ce qui se passe dans votre application Web :

Signaler les exceptions gérées de manière programmatique

Vous pouvez enregistrer manuellement les exceptions gérées à l'aide de recordError. Les erreurs de routage et les exceptions non interceptées sont automatiquement capturées par les limites d'erreur de votre framework.

Voici comment suivre la prévalence des échecs et les attributs de diagnostic pour vos utilisateurs :

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

Ajouter des clés personnalisées

Les clés de métadonnées personnalisées vous aident à comprendre l'état spécifique de l'application ou le workflow utilisateur qui ont entraîné un plantage.

Vous pouvez consigner les activités des utilisateurs, les états de session et les détails de diagnostic directement en tant qu'attributs personnalisés clé-valeur à l'aide du paramètre de métadonnées facultatif lors de l'appel de 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'
});

Ces attributs personnalisés sont conservés dans le rapport d'exception et s'affichent sous l'onglet Keys (Clés) dans la vue des problèmes du tableau de bord Crashlytics.

Forcer l'effacement des enregistrements de télémétrie

Par défaut, le moteur de télémétrie Web regroupe les journaux dans des segments de mémoire afin de préserver l'autonomie de la batterie, les performances du processeur et la bande passante réseau. Toutefois, pour les environnements d'exécution éphémères, les journaux doivent être importés immédiatement avant la destruction du contexte d'exécution.

Vous pouvez utiliser la commande asynchrone flush pour envoyer immédiatement toutes les erreurs en file d'attente au backend :

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

Configurer le taux d'échantillonnage

Si vous échantillonnez une partie de vos sessions utilisateur pour contrôler le volume et le coût de la télémétrie, vous pouvez configurer l'échantillonnage à l'aide de l'une des options suivantes :

Option 1 (recommandée) : Configurer le taux d'échantillonnage dans la console Firebase

  1. Dans la console Firebase, accédez au tableau de bord DevOps et engagement > Crashlytics.

  2. Sélectionnez votre application Web dans le menu déroulant en haut de la page.

  3. Cliquez sur Configurer l'échantillonnage en haut à droite du tableau de bord.

  4. Définissez le pourcentage du taux d'échantillonnage (entre 0% et 100%) pour contrôler le pourcentage d'événements et de sessions collectés auprès des clients.

Option 2 : Définir le taux d'échantillonnage à l'aide de l'API Firebase Telemetry Admin

Vous pouvez utiliser l'API Firebase Telemetry Admin (firebasetelemetryadmin.googleapis.com/v1alpha) pour gérer les paramètres de collecte de télémétrie de vos applications Firebase.

  1. Configurez les variables requises suivantes dans votre 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. Recherchez votre CONFIG_NAME, puis configurez-le en tant que variable dans votre terminal :

    Les paramètres de télémétrie sont gérés à l'aide d'une ressource Config. Vous devez donc trouver l'CONFIG_NAME spécifique à votre application Web.

    1. Répertoriez les configurations de votre projet et filtrez-les par FIREBASE_APP_ID. Les options curl -G et --data-urlencode garantissent que la chaîne de filtre AIP-160 est correctement encodée au format 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. Dans la réponse JSON, recherchez le champ name de votre application (projects/PROJECT_ID/locations/LOCATION/configs/<CONFIG_ID>), puis définissez-le comme variable CONFIG_NAME :

      CONFIG_NAME="CONFIG_NAME"
      
  3. Définissez le taux d'échantillonnage :

    Pour ajuster le taux d'échantillonnage, utilisez la méthode PATCH pour mettre à jour le champ sampling_rate. Vous devez spécifier updateMask=sampling_rate dans les paramètres de requête. Le taux d'échantillonnage est une valeur double représentant le pourcentage de sessions à collecter (par exemple, 0.25 pour 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"
    

Désactiver ou activer la collecte de données de télémétrie

Par défaut, la collecte de données de télémétrie est activée lorsque vous configurez Crashlytics pour votre application Web. Si vous devez désactiver ou réactiver la collecte de données de télémétrie de manière dynamique après l'installation du SDK Crashlytics, vous pouvez gérer les points de collecte à l'aide de l'API Firebase Telemetry Admin (firebasetelemetryadmin.googleapis.com/v1alpha).

Avant de pouvoir désactiver ou activer la télémétrie, vous devez définir les variables suivantes :

  1. Configurez les variables requises suivantes dans votre 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. Recherchez votre CONFIG_NAME, puis configurez-le en tant que variable dans votre terminal :

    Les paramètres de télémétrie sont gérés à l'aide d'une ressource Config. Vous devez donc trouver l'CONFIG_NAME spécifique à votre application Web.

    1. Répertoriez les configurations de votre projet et filtrez-les par FIREBASE_APP_ID. Les options curl -G et --data-urlencode garantissent que la chaîne de filtre AIP-160 est correctement encodée au format 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. Dans la réponse JSON, recherchez le champ name de votre application (projects/PROJECT_ID/locations/LOCATION/configs/<CONFIG_ID>), puis définissez-le comme variable CONFIG_NAME :

      CONFIG_NAME="CONFIG_NAME"
      

Désactiver la collecte de données de télémétrie

Utilisez la méthode personnalisée :disable pour désactiver la collecte de données de télémétrie :

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

Réactiver la collecte de données de télémétrie

Pour réactiver la collecte de données de télémétrie, appelez la méthode :enable :

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