Registrador de depuración de transmisión

El SDK de Web Receiver proporciona la API de CastDebugLogger para que los desarrolladores puedan depurar fácilmente su app de receptor web y una herramienta de comando y control (CaC) complementaria a fin de capturar registros.

Inicialización

Para usar la API CastDebugLogger, incluye la siguiente secuencia de comandos en la app del receptor web justo después de la secuencia de comandos del SDK del receptor web:

<!-- 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>

Crea el objeto CastDebugLogger y habilita el registrador:

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

Cuando el registrador de depuración está habilitado, se muestra una superposición que muestra MODO DE DEPURACIÓN en el receptor.

Eventos del reproductor de registro

Con CastDebugLogger, puedes registrar con facilidad los eventos del reproductor que se activan con el SDK de Web Receiver y usar diferentes niveles del registrador para registrar los datos del evento. La configuración de loggerLevelByEvents toma cast.framework.events.EventType y cast.framework.events.category para especificar los eventos que se registrarán.

Por ejemplo, si quieres saber cuándo se activan los eventos CORE del reproductor o se transmite un cambio mediaStatus, usa la siguiente configuración para registrar los eventos:

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

Registra mensajes personalizados con etiquetas personalizadas

La API de CastDebugLogger te permite crear mensajes de registro que aparecen en la superposición de depuración del receptor web con diferentes colores. Usa los siguientes métodos de registro, que se ordenan de mayor a menor prioridad:

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

Para cada método de registro, el primer parámetro debe ser una etiqueta personalizada y el segundo parámetro es el mensaje de registro. La etiqueta puede ser cualquier string que te resulte útil.

A continuación, se muestra un ejemplo de cómo usar el registrador de depuración en el interceptor 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);
                    }
                }
            );
        });
    }
);

Puedes controlar qué mensajes aparecen en la superposición de depuración si configuras el nivel de registro en loggerLevelByTags para cada etiqueta personalizada. Por ejemplo, si se habilita una etiqueta personalizada con el nivel de registro cast.framework.LoggerLevel.DEBUG, se mostrarían todos los mensajes que se agreguen con mensajes de registro de error, advertencia, información y depuración. Otro ejemplo es que habilitar una etiqueta personalizada con el nivel WARNING solo mostraría mensajes de registro de error y advertencia.

La configuración loggerLevelByTags es opcional. Si una etiqueta personalizada no está configurada para su nivel de registrador, todos los mensajes del registro se mostrarán en la superposición de depuración.

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

Superposición para depurar

El registrador de depuración de Cast proporciona una superposición de depuración en el receptor web para mostrar tus mensajes de registro personalizados. Usa showDebugLogs para activar o desactivar la superposición de depuración y clearDebugLogs para borrar los mensajes del registro en la superposición.

Recordatorio: Usa showDebugLogs y clearDebugLogs después de que castDebugLogger esté habilitado.

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