Cast 디버그 로거

웹 수신기 SDK는 개발자가 쉽게 사용할 수 있는 CastDebugLogger API를 제공합니다. 웹 수신기 앱 및 호환 앱 디버깅 명령어 및 제어 (CaC) 도구를 사용하여 할 수 있습니다

초기화

CastDebugLogger API를 사용하려면 다음 스크립트를 웹 수신기 SDK 스크립트 바로 뒤에 오는 웹 수신기 앱:

<!-- 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를 사용하면 개발자가 실행한 플레이어 이벤트를 쉽게 로깅할 수 있습니다. 다른 로거 수준을 사용하여 이벤트 데이터를 로깅합니다. 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를 사용하면 웹 수신기 디버그 오버레이를 다른 색상으로 표시합니다. 다음과 같은 로그 메서드를 사용합니다. 가장 높은 우선순위에서 가장 낮은 우선순위 순으로 나열됩니다.

  • 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 디버그 로거는 웹 수신기에 디버그 오버레이를 제공하여 맞춤 로그 메시지를 작성합니다 showDebugLogs를 사용하여 디버그 오버레이 전환 및 clearDebugLogs를 사용하여 오버레이에서 로그 메시지를 지웁니다.

알림: CastDebugLogger가 설정된 후 showDebugLogsclearDebugLogs를 사용하세요. 사용 설정되어 있습니다.

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