Debug-Protokollierung für Umwandlung

Das Web Receiver SDK bietet Entwicklern die CastDebugLogger API, mit der sie Fehler in ihrer Web Receiver-App und dem zugehörigen Command and Control (CaC)-Tool zum Erfassen von Logs ganz einfach beheben können.

Initialisierung

Zur Verwendung der CastDebugLogger API fügen Sie das folgende Skript in die Web Receiver App direkt nach dem Web Receiver SDK-Skript ein:

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

Erstellen Sie das Objekt CastDebugLogger und aktivieren Sie den Logger:

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

Wenn die Debugging-Protokollierung aktiviert ist, wird ein Overlay mit dem FEHLERMODUS auf dem Empfänger angezeigt.

Player-Ereignisse protokollieren

Mit CastDebugLogger kannst du Spielerereignisse, die vom Web Receiver SDK ausgelöst werden, ganz einfach protokollieren und die Ereignisdaten mit verschiedenen Logger-Ebenen protokollieren. Die loggerLevelByEvents-Konfiguration erfordert cast.framework.events.EventType und cast.framework.events.category, um die zu protokollierenden Ereignisse anzugeben.

Wenn Sie beispielsweise wissen möchten, wann CORE-Ereignisse des Players ausgelöst oder eine mediaStatus-Änderung gesendet wird, verwenden Sie die folgende Konfiguration, um die Ereignisse zu protokollieren:

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

Benutzerdefinierte Nachrichten mit benutzerdefinierten Tags protokollieren

Mit der CastDebugLogger API können Sie Lognachrichten mit verschiedenen Farben im Web Receiver-Debug-Overlay erstellen. Verwenden Sie die folgenden Logmethoden, beginnend mit der höchsten bis niedrigsten Priorität:

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

Für jede Logmethode sollte der erste Parameter ein benutzerdefiniertes Tag und der zweite Parameter die Lognachricht sein. Das Tag kann ein beliebiger String sein.

Im Folgenden finden Sie ein Beispiel für die Verwendung des Debug-Loggers im 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);
                    }
                }
            );
        });
    }
);

Sie können festlegen, welche Meldungen im Debug-Overlay angezeigt werden. Legen Sie dazu für jedes benutzerdefinierte Tag die Logebene in loggerLevelByTags fest. Wenn Sie beispielsweise ein benutzerdefiniertes Tag mit der Log-Ebene cast.framework.LoggerLevel.DEBUG aktivieren, werden alle Nachrichten angezeigt, die mit Fehler-, Warn-, Informations- und Fehlerbehebungs-Log-Nachrichten hinzugefügt wurden. Ein weiteres Beispiel: Wenn Sie ein benutzerdefiniertes Tag mit der Ebene WARNING aktivieren, werden nur Fehler- und Logmeldungen angezeigt.

Die loggerLevelByTags-Konfiguration ist optional. Wenn ein benutzerdefiniertes Tag nicht für seine Logger-Ebene konfiguriert ist, werden alle Logmeldungen im Debug-Overlay angezeigt.

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

Debug-Overlay

Der Debug-Logger für die Übertragung bietet im Webempfänger ein Overlay für die Fehlerbehebung, mit dem Sie Ihre benutzerdefinierten Lognachrichten anzeigen können. Verwenden Sie showDebugLogs, um das Debug-Overlay umzuschalten, und clearDebugLogs, um Lognachrichten im Overlay zu löschen.

Zur Erinnerung: Verwenden Sie showDebugLogs und clearDebugLogs, nachdem „castDebugLogger“ aktiviert ist.

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