Trình ghi nhật ký gỡ lỗi truyền

SDK Bộ thu web cung cấp API CastDebugLogger để nhà phát triển dễ dàng gỡ lỗi ứng dụng Bộ thu web và Công cụ Command và Control (CaC) đi kèm để ghi nhật ký.

Khởi chạy

Để sử dụng CastDebugLogger API, hãy đưa tập lệnh sau vào ứng dụng Bộ thu web ngay sau tập lệnh SDK của bộ thu 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>

Tạo đối tượng CastDebugLogger và bật trình ghi nhật ký:

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

Khi trình ghi nhật ký gỡ lỗi được bật, một lớp phủ hiển thị GỠ LỖI CHẾ ĐỘ sẽ hiển thị trên bộ thu.

Ghi lại sự kiện người chơi

Bằng cách sử dụng CastDebugLogger, bạn có thể dễ dàng ghi lại các sự kiện của người chơi được kích hoạt bởi SDK bộ thu web và sử dụng các cấp độ trình ghi khác nhau để ghi lại dữ liệu sự kiện. Cấu hình loggerLevelByEvents lấy cast.framework.events.EventTypecast.framework.events.category để chỉ định các sự kiện cần ghi nhật ký.

Ví dụ: nếu bạn muốn biết thời điểm kích hoạt sự kiện CORE của người chơi hoặc một thay đổi mediaStatus, hãy sử dụng cấu hình sau để ghi lại các sự kiện:

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

Ghi nhật ký Thông báo tuỳ chỉnh bằng Thẻ tuỳ chỉnh

API CastDebugLogger cho phép bạn tạo các thông điệp nhật ký xuất hiện trên lớp phủ gỡ lỗi của Trình thu thập thông tin web với nhiều màu sắc. Hãy sử dụng các phương thức ghi nhật ký sau đây, liệt kê theo thứ tự ưu tiên từ cao nhất đến thấp nhất:

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

Đối với mỗi phương thức nhật ký, tham số đầu tiên nên là một thẻ tuỳ chỉnh và tham số thứ hai là thông điệp nhật ký. Thẻ có thể là bất kỳ chuỗi nào mà bạn thấy hữu ích.

Dưới đây là ví dụ về cách sử dụng trình ghi nhật ký gỡ lỗi trong trình chặn 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);
                    }
                }
            );
        });
    }
);

Bạn có thể kiểm soát những thông báo xuất hiện trên lớp phủ gỡ lỗi bằng cách đặt cấp độ nhật ký trong loggerLevelByTags cho từng thẻ tuỳ chỉnh. Ví dụ: việc bật thẻ tuỳ chỉnh có cấp độ nhật ký cast.framework.LoggerLevel.DEBUG sẽ hiển thị tất cả các thông báo lỗi được thêm vào, cảnh báo, thông tin và gỡ lỗi thông điệp nhật ký. Một ví dụ khác là việc bật thẻ tùy chỉnh có cấp WARNING sẽ chỉ hiển thị lỗi và cảnh báo các thông điệp nhật ký.

Cấu hình loggerLevelByTags là không bắt buộc. Nếu bạn không định cấu hình thẻ tùy chỉnh cho cấp độ trình ghi nhật ký, thì tất cả thông điệp nhật ký sẽ hiển thị trên lớp phủ gỡ lỗi.

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

Lớp phủ gỡ lỗi

Trình ghi nhật ký gỡ lỗi truyền cung cấp lớp phủ gỡ lỗi trên Bộ thu web để hiển thị thông điệp nhật ký tuỳ chỉnh của bạn. Hãy dùng showDebugLogs để bật/tắt lớp phủ gỡ lỗi và clearDebugLogs để xoá thông điệp nhật ký trên lớp phủ.

Lời nhắc: sử dụng showDebugLogsclearDebugLogs sau khi castDebugLogger được bật.

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