ตัวบันทึกการแก้ไขข้อบกพร่องการแคสต์

Web Receiver SDK มี CastDebugLogger API สำหรับนักพัฒนาซอฟต์แวร์ แก้ไขข้อบกพร่องของแอป Web Receiver และโฆษณาที่แสดงร่วม เครื่องมือ Command and Control (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 เพื่อบันทึกเหตุการณ์ของผู้เล่นที่จะเริ่มทำงานโดย Web Receiver 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 ช่วยให้คุณสร้างข้อความบันทึกที่ปรากฏใน การวางซ้อนการแก้ไขข้อบกพร่องของตัวรับเว็บซึ่งมีสีต่างกัน โปรดใช้เมธอดบันทึกต่อไปนี้ แสดงเรียงตามลำดับความสำคัญสูงสุดไปยังต่ำสุด

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

สำหรับวิธีบันทึกแต่ละวิธี พารามิเตอร์แรกควรเป็นแท็กที่กำหนดเอง และ พารามิเตอร์ที่ 2 คือข้อความบันทึก แท็กอาจเป็นสตริงใดก็ได้ที่คุณคิดว่ามีประโยชน์

ต่อไปนี้เป็นตัวอย่างวิธีใช้ตัวบันทึกการแก้ไขข้อบกพร่องในตัวสกัดกั้น 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

การวางซ้อนการแก้ไขข้อบกพร่อง

ตัวบันทึกการแก้ไขข้อบกพร่องของแคสต์จะแสดงการวางซ้อนการแก้ไขข้อบกพร่องบนตัวรับสัญญาณเว็บเพื่อแสดง ข้อความบันทึกที่กำหนดเอง ใช้ 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();
  }
});