Enregistreur de débogage Cast

Le SDK Récepteur Web fournit l'API CastDebugLogger aux développeurs, qui leur permet de déboguer facilement leur application Web Receiver, ainsi qu'un outil Command and Control (CaC) associé pour récupérer les journaux.

Initialisation

Pour utiliser l'API CastDebugLogger, incluez le script suivant dans votre application récepteur Web juste après le script du SDK Web Receiver:

<!-- Web Receiver SDK -->
<script src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js"></script>
<!-- Cast Debug Logger -->
<script src="//www.gstatic.com/cast/sdk/libs/devtools/debug_layer/caf_receiver_logger.js"></script>

Créez l'objet CastDebugLogger et activez l'enregistreur:

const castDebugLogger = cast.debug.CastDebugLogger.getInstance();

const context = cast.framework.CastReceiverContext.getInstance();

context.addEventListener(cast.framework.system.EventType.READY, () => {
  if (!castDebugLogger.debugOverlayElement_) {
      // Enable debug logger and show a 'DEBUG MODE' overlay at top left corner.
      castDebugLogger.setEnabled(true);
  }
});

Lorsque l'enregistreur de débogage est activé, une superposition affichant le mode DÉBOGAGE s'affiche sur le récepteur.

Événements de lecteur de journal

Avec CastDebugLogger, vous pouvez facilement consigner les événements du lecteur déclenchés par le SDK Récepteur Web et utiliser différents niveaux d'enregistreur pour consigner les données d'événement. La configuration de loggerLevelByEvents nécessite cast.framework.events.EventType et cast.framework.events.category pour spécifier les événements à consigner.

Par exemple, si vous souhaitez savoir quand les événements CORE du lecteur sont déclenchés ou si une modification de mediaStatus est diffusée, utilisez la configuration suivante pour enregistrer les événements:

castDebugLogger.loggerLevelByEvents = {
  'cast.framework.events.category.CORE': cast.framework.LoggerLevel.INFO,
  'cast.framework.events.EventType.MEDIA_STATUS': cast.framework.LoggerLevel.DEBUG
}

Consigner les messages personnalisés à l'aide de tags personnalisés

L'API CastDebugLogger vous permet de créer des messages de journal de différentes couleurs sur la superposition de débogage du récepteur Web. Utilisez les méthodes de journal suivantes, répertoriées par ordre de priorité décroissante:

  • castDebugLogger.error(custom_tag, message);
  • castDebugLogger.warn(custom_tag, message);
  • castDebugLogger.info(custom_tag, message);
  • castDebugLogger.debug(custom_tag, message);

Pour chaque méthode de journalisation, le premier paramètre doit être une balise personnalisée et le second est le message de journal. Vous pouvez utiliser la chaîne de votre choix.

Voici un exemple d'utilisation de l'enregistreur de débogage dans l'intercepteur LOAD.

const LOG_TAG = 'MyReceiverApp';

playerManager.setMessageInterceptor(
    cast.framework.messages.MessageType.LOAD,
    request => {
        castDebugLogger.debug(LOG_TAG, 'Intercepting LOAD request');

        return new Promise((resolve, reject) => {
            fetchMediaAsset(request.media.contentId).then(
                data => {
                    let item = data[request.media.contentId];
                    if (!item) {
                        castDebugLogger.error(LOG_TAG, 'Content not found');

                        reject();
                    } else {
                        request.media.contentUrl = item.stream.hls;
                        castDebugLogger.info(LOG_TAG,
                            'Playable URL:', request.media.contentUrl);

                        resolve(request);
                    }
                }
            );
        });
    }
);

Vous pouvez contrôler les messages qui apparaissent sur la superposition de débogage en définissant le niveau de journalisation dans loggerLevelByTags pour chaque tag personnalisé. Par exemple, l'activation d'une balise personnalisée avec le niveau de journalisation cast.framework.LoggerLevel.DEBUG affiche tous les messages ajoutés comportant des messages d'erreur, d'avertissement, d'informations et de débogage. Autre exemple : l'activation d'une balise personnalisée de niveau WARNING n'affiche que les messages de journal d'erreur et d'avertissement.

La configuration loggerLevelByTags est facultative. Si une balise personnalisée n'est pas configurée pour son niveau d'enregistreur, tous les messages de journal s'afficheront sur la superposition de débogage.

const LOG_TAG1 = 'Tag1';
const LOG_TAG2 = 'Tag2';

// Set verbosity level for custom tags
castDebugLogger.loggerLevelByTags = {
    [LOG_TAG1]: cast.framework.LoggerLevel.WARNING,
    [LOG_TAG2]: cast.framework.LoggerLevel.DEBUG,
};
castDebugLogger.debug(LOG_TAG1, 'debug log from tag1');
castDebugLogger.info(LOG_TAG1, 'info log from tag1');
castDebugLogger.warn(LOG_TAG1, 'warn log from tag1');
castDebugLogger.error(LOG_TAG1, 'error log from tag1');

castDebugLogger.debug(LOG_TAG2, 'debug log from tag2');
castDebugLogger.info(LOG_TAG2, 'info log from tag2');
castDebugLogger.warn(LOG_TAG2, 'warn log from tag2');
castDebugLogger.error(LOG_TAG2, 'error log from tag2');

// example outputs:
// [Tag1] [WARN] warn log from tag1
// [Tag1] [ERROR] error log from tag1
// [Tag2] [DEBUG] debug log from tag2
// [Tag2] [INFO] info log from tag2
// [Tag2] [WARN] warn log from tag2
// [Tag2] [ERROR] error log from tag2

Superposition de débogage

L'enregistreur de débogage Cast fournit une superposition de débogage sur le récepteur Web pour afficher vos messages de journal personnalisés. Utilisez showDebugLogs pour activer/désactiver la superposition de débogage et clearDebugLogs pour effacer les messages de journal sur la superposition.

Rappel: Utilisez showDebugLogs et clearDebugLogs une fois que CastDebugLogger est activé.

const context = cast.framework.CastReceiverContext.getInstance();

context.addEventListener(cast.framework.system.EventType.READY, () => {
  if (!castDebugLogger.debugOverlayElement_) {
      // Enable debug logger and show a 'DEBUG MODE' overlay at top left corner.
      castDebugLogger.setEnabled(true);
      // Show debug overlay
      castDebugLogger.showDebugLogs(true);
      // Clear log messages on debug overlay
      castDebugLogger.clearDebugLogs();
  }
});