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