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

SDK ตัวรับเว็บมี CastDebugLogger API สําหรับนักพัฒนาซอฟต์แวร์ เพื่อให้แก้ไขข้อบกพร่องของแอปตัวรับเว็บได้โดยง่าย และเครื่องมือ Command และ Control (CaC) ที่ใช้ร่วมกันก็ได้เพื่อเก็บบันทึก

การเริ่มต้น

หากต้องการใช้ CastDebugLogger API ให้ใส่สคริปต์ต่อไปนี้ในแอป Web Receiver หลังสคริปต์ 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 คุณจะบันทึกกิจกรรมของผู้เล่นที่เริ่มทํางานโดย 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();
  }
});