Приведение журнала отладки

Пакет SDK для веб-приемника предоставляет API CastDebugLogger, с помощью которого разработчики могут легко отлаживать свое приложение веб-приемника, а также сопутствующий инструмент управления и контроля (CaC) для сбора журналов.

Инициализация

Чтобы использовать CastDebugLogger API , включите следующий сценарий в свое приложение Web Receiver сразу после сценария 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>

Создайте объект CastDebugLogger и включите логгер:

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

Когда регистратор отладки включен, на приемнике отображается наложение с надписью РЕЖИМ ОТЛАДКИ .

Записывать события игрока

Используя CastDebugLogger , вы можете легко регистрировать события игрока, которые запускаются SDK веб-приемника, и использовать различные уровни ведения журнала для регистрации данных о событиях. Конфигурация loggerLevelByEvents принимает cast.framework.events.EventType и cast.framework.events.category , чтобы указать события, которые должны быть зарегистрированы.

Например, если вы хотите знать, когда запускаются события CORE проигрывателя или транслируется изменение mediaStatus , используйте следующую конфигурацию для регистрации событий:

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

Регистрировать пользовательские сообщения с пользовательскими тегами

CastDebugLogger API позволяет создавать сообщения журнала, которые отображаются в наложении отладки Web Receiver разными цветами. Используйте следующие методы ведения журнала, перечисленные в порядке от самого высокого до самого низкого приоритета:

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

Для каждого метода журнала первым параметром должен быть настраиваемый тег, а вторым параметром — сообщение журнала . Тег может быть любой строкой, которую вы сочтете полезной.

Вот пример того, как использовать регистратор отладки в перехватчике 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);
                    }
                }
            );
        });
    }
);

Вы можете контролировать, какие сообщения будут отображаться в наложении отладки, задав уровень журнала в loggerLevelByTags для каждого пользовательского тега. Например, включение пользовательского тега с уровнем журнала cast.framework.LoggerLevel.DEBUG будет отображать все сообщения, добавленные с ошибками, предупреждениями, информацией и сообщениями журнала отладки. Другим примером является то, что включение пользовательского тега с уровнем WARNING будет отображать только сообщения об ошибках и предупреждениях.

Конфигурация loggerLevelByTags не является обязательной. Если для пользовательского тега не настроен уровень ведения журнала, все сообщения журнала будут отображаться в оверлее отладки.

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

Наложение отладки

Cast Debug Logger обеспечивает наложение отладки на веб-приемник для отображения ваших пользовательских сообщений журнала. Используйте showDebugLogs для переключения наложения отладки и clearDebugLogs для очистки сообщений журнала в наложении.

Напоминание: используйте showDebugLogs и clearDebugLogs после включения castDebugLogger.

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