Hata Ayıklama Günlüğünü Yayınla

Web Receiver SDK, CastDebugLogger API'yi geliştiricilerin kolayca sunması için Web Receiver uygulaması ve bir tamamlayıcı öğede hata ayıklama Yakalama için Komut ve Denetim (CaC) Aracı günlükler.

Başlatma

CastDebugLogger API'yi kullanmak için aşağıdaki komut dosyasını Web Receiver SDK komut dosyasından hemen sonraki Web Receiver uygulaması:

<!-- 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 nesnesini oluşturun ve günlük kaydediciyi etkinleştirin:

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

Hata ayıklama günlük kaydı etkinleştirildiğinde HATA AYIKLAMA MODU görüntüleyen bir yer paylaşımı görebilirsiniz.

Oynatıcı Etkinliklerini Günlüğe Kaydet

CastDebugLogger kullanarak, web Buyer SDK'sı oluşturun ve etkinlik verilerini günlüğe kaydetmek için farklı günlükçü düzeyleri kullanın. loggerLevelByEvents yapılandırması cast.framework.events.EventType içinde gerçekleştirilecek ve cast.framework.events.category girin.

Örneğin, CORE adlı oynatıcı etkinliklerinin ne zaman tetiklendiğini öğrenmek isterseniz bir mediaStatus değişikliği yayınlandığında, etkinlikler:

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

Özel Mesajları Özel Etiketlerle Günlüğe kaydedin

CastDebugLogger API, farklı renklere sahip Web Alıcı hata ayıklama yer paylaşımı Aşağıdaki günlük yöntemlerini kullanın: en az öncelikliye göre sıralanır:

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

Her günlük yöntemi için ilk parametre bir özel etiket ve ikinci parametre log Message'dır. Etiket, yararlı bulduğunuz herhangi bir dize olabilir.

Aşağıda, LOAD müdahalecisinde hata ayıklama günlük kaydedicinin nasıl kullanılacağına dair bir örnek verilmiştir.

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

Günlüğü ayarlayarak hata ayıklama yer paylaşımında hangi mesajların görüneceğini kontrol edebilirsiniz düzeyi loggerLevelByTags olarak ayarlanır. Örneğin, günlük düzeyi cast.framework.LoggerLevel.DEBUG olan özel etiket görüntülenir Hata, uyarı, bilgi ve hata ayıklama günlük mesajlarıyla eklenen tüm mesajlar. Diğer Örneğin, WARNING düzeyinde özel bir etiket etkinleştirildiğinde yalnızca günlük mesajları oluşturur.

loggerLevelByTags yapılandırması isteğe bağlıdır. Özel etiket yapılandırılmamışsa tüm günlük mesajları hata ayıklama yer paylaşımında gösterilir.

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

Hata Ayıklama Yer Paylaşımı

Yayın Hata Ayıklama Günlükçüsü, Web Alıcısı'nda gösterilmesi için bir hata ayıklama yer paylaşımı otomatik olarak oluşturabilirsiniz. Hata ayıklama yer paylaşımını açmak/kapatmak için showDebugLogs öğesini kullanın ve yer paylaşımlı günlük mesajlarını temizlemek için clearDebugLogs tuşlarına basın.

Hatırlatma: castDebugLogger özelliği etkinleştirildikten sonra showDebugLogs ve clearDebugLogs kullanın etkin.

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