Pakiet SDK Web odbiornika udostępnia interfejs API CastDebugLogger dla programistów, który ułatwia debugowanie aplikacji Web odbiornika i towarzyszącego narzędzia Command i Control (CaC) do przechwytywania logów.
Zdarzenie inicjujące
Aby korzystać z interfejsu CastDebugLogger API, w aplikacji odbierającej pocztę umieść następujący skrypt bezpośrednio w skrypcie pakietu Web odbiornika 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>
Utwórz obiekt CastDebugLogger
i włącz rejestrator:
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);
}
});
Gdy rejestrator debugowania jest włączony, na odbiorniku wyświetla się nakładka TRYB DEBUGOWANIA.
Zdarzenia z dziennika
Za pomocą CastDebugLogger
możesz łatwo rejestrować zdarzenia odtwarzacza, które są uruchamiane przez pakiet SDK odbiornika internetowego, oraz używać różnych poziomów rejestrowania, aby rejestrować dane zdarzeń.
Konfiguracja loggerLevelByEvents
wymaga cast.framework.events.EventType
i cast.framework.events.category
określenia zdarzeń do zarejestrowania.
Jeśli na przykład chcesz wiedzieć, kiedy uruchamiane są zdarzenia CORE
odtwarzacza lub gdy wysyłana jest zmiana mediaStatus
, możesz zarejestrować te zdarzenia za pomocą takiej konfiguracji:
castDebugLogger.loggerLevelByEvents = {
'cast.framework.events.category.CORE': cast.framework.LoggerLevel.INFO,
'cast.framework.events.EventType.MEDIA_STATUS': cast.framework.LoggerLevel.DEBUG
}
Rejestrowanie niestandardowych wiadomości za pomocą niestandardowych tagów
Interfejs CastDebugLogger API pozwala tworzyć komunikaty logu, które będą wyświetlane w nakładce debugowania Web odbiornika w różnych kolorach. Używaj tych metod logu, które są wymienione w kolejności od najwyższego do najniższego priorytetu:
castDebugLogger.error(custom_tag, message);
castDebugLogger.warn(custom_tag, message);
castDebugLogger.info(custom_tag, message);
castDebugLogger.debug(custom_tag, message);
W przypadku każdej metody logu pierwszy parametr powinien być tagiem niestandardowym, a drugi – komunikatem logu. Może to być dowolny ciąg znaków, który uważasz za przydatny.
Oto przykład użycia rejestratora debugowania w przechwytywaniu 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);
}
}
);
});
}
);
Możesz wybrać, które wiadomości mają się pojawiać w nakładce debugowania, ustawiając poziom rejestrowania w loggerLevelByTags
dla każdego tagu niestandardowego. Na przykład włączenie tagu niestandardowego z poziomem dziennika cast.framework.LoggerLevel.DEBUG
wyświetli wszystkie dodane komunikaty o błędach, ostrzeżeniach, informacjach i debugowaniu. Inny przykład to włączenie tagu niestandardowego na poziomie WARNING
spowoduje wyświetlanie tylko komunikatów o błędach i ostrzeżeniach.
Konfiguracja loggerLevelByTags
jest opcjonalna. Jeśli tag niestandardowy nie jest skonfigurowany na poziomie rejestratora, na nakładce debugowania będą wyświetlane wszystkie komunikaty.
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
Nakładka debugowania
Rejestrator przesyłania Cast udostępnia nakładkę debugowania na odbiorniku internetowym, aby wyświetlać niestandardowe komunikaty logu. Użyj showDebugLogs
, aby przełączyć nakładkę debugowania, i clearDebugLogs
, aby wyczyścić komunikaty logu w nakładce.
Przypomnienie: użyj reguł showDebugLogs
i clearDebugLogs
po włączeniu aplikacji 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();
}
});