Registrador de depuración de transmisión

El SDK de receptor web proporciona la API de CastDebugLogger para que los desarrolladores puedan depurar la app receptora web y una app complementaria Herramienta de comando y control (CaC) para capturar los registros del sistema operativo.

Inicialización

Para usar la API de CastDebugLogger, incluye la siguiente secuencia de comandos en tu App receptora 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 registro de depuración está habilitado, se muestra una superposición que indica MODO DE DEPURACIÓN mostrar en el receptor.

Eventos del reproductor de registro

Con CastDebugLogger, puedes registrar fácilmente los eventos del reproductor que activan el SDK de receptor web y usar diferentes niveles de registrador para registrar los datos de eventos. 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 jugador o si se transmite un cambio mediaStatus, usa la siguiente configuración para registrar 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 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: en orden 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. El segundo parámetro es el mensaje de registro. La etiqueta puede ser cualquier cadena que te resulte útil.

Este es 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 configurando el registro nivel en loggerLevelByTags para cada etiqueta personalizada. Por ejemplo, habilitar un se mostrará la etiqueta personalizada con nivel de registro cast.framework.LoggerLevel.DEBUG todos los mensajes agregados con mensajes de registro de error, advertencia, información y depuración. Otro Por ejemplo, habilitar una etiqueta personalizada con el nivel WARNING solo mostraría y advertir sobre los mensajes de registro.

La configuración de loggerLevelByTags es opcional. Si no se configuró una etiqueta personalizada 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 registro 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 se convierta castDebugLogger 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();
  }
});