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

Web Alıcısı SDK'sı, geliştiricilerin Web Alıcı uygulamalarında kolayca hata ayıklaması için CastDebugLogger API'si ve günlükleri yakalamak için tamamlayıcı bir Komut ve Kontrol (CaC) Aracı sunar.

Başlatma

CastDebugLogger API'sini kullanmak için Web Alıcısı SDK komut dosyasından hemen sonra aşağıdaki komut dosyasını Web Alıcınıza ekleyin:

<!-- 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üğü 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, alıcıda HATA AYIKLAMA MODU'nu gösteren bir yer paylaşımı gösterilir.

Oynatıcı Oynatıcısı Etkinlikleri

CastDebugLogger kullanarak, Web Alıcısı SDK'sı tarafından tetiklenen oynatıcı etkinliklerini kolayca kaydedebilir ve etkinlik verilerini günlüğe kaydetmek için farklı günlük kaydı düzeylerini kullanabilirsiniz. loggerLevelByEvents yapılandırması, günlüğe kaydedilecek etkinlikleri belirtmek için cast.framework.events.EventType ve cast.framework.events.category özelliklerini kullanır.

Örneğin, CORE oynatıcısının etkinlikleri ne zaman tetiklendiğini veya mediaStatus değişikliğinin ne zaman yayınlandığını öğrenmek istiyorsanız etkinlikleri kaydetmek için aşağıdaki yapılandırmayı kullanın:

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

Özel Etiketleri Kullanarak Özel İletileri Kaydetme

CastDebugLogger API, Web Alıcısı hata ayıklama yer paylaşımında farklı renklerle gösterilen günlük mesajları oluşturmanızı sağlar. Aşağıdaki günlük yöntemlerini kullanarak önceliği en yüksekten en düşüğe sıralayın:

  • 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 özel etiket, ikinci parametre ise günlük mesajı olmalıdır. Etiket, yararlı bulduğunuz herhangi bir dize olabilir.

Aşağıda, hata ayıklama günlük kaydının LOAD müdahalesinde 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);
                    }
                }
            );
        });
    }
);

Her bir özel etiket için loggerLevelByTags günlük düzeyini ayarlayarak hata ayıklama yer paylaşımında hangi mesajların gösterileceğini kontrol edebilirsiniz. Örneğin, günlük düzeyi cast.framework.LoggerLevel.DEBUG olan bir özel etiket etkinleştirildiğinde, eklenen tüm iletiler hata, uyarı, bilgi ve hata ayıklama günlük mesajlarıyla gösterilir. Bir diğer örnek de WARNING düzeyinde özel bir etiketin etkinleştirilmesinin yalnızca hata gösterip günlük mesajlarını uyarmasıdır.

loggerLevelByTags yapılandırması isteğe bağlıdır. Bir özel etiket, günlük kaydı düzeyi için 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ı

Cast Debug Logger, özel günlük mesajlarınızı göstermek için Web Alıcısı'nda bir hata ayıklama yer paylaşımı sağlar. Yer paylaşımlı hata ayıklamayı açmak/kapatmak için showDebugLogs; yer paylaşımındaki günlük mesajlarını temizlemek içinse clearDebugLogs kullanın.

Hatırlatma: castDebugLogger etkinleştirildikten sonra showDebugLogs ve clearDebugLogs özelliklerini kullanın.

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