Workbox предоставляет мощный и гибкий механизм логирования, позволяющий отслеживать работу сервис-воркера, кэширование ресурсов и обработку запросов. Управление уровнем логирования критично для диагностики проблем и оптимизации производительности приложений.
Workbox использует несколько уровней логирования, которые контролируют количество и тип выводимой информации:
debug – максимально подробный уровень.
Отображает детальные сообщения о работе стратегий кэширования,
маршрутизации и событиях сервис-воркера. Используется преимущественно в
процессе разработки.info – стандартный уровень, включающий
ключевые события и состояния Workbox, такие как установка и активация
сервис-воркера, успешное кэширование ресурсов и обновление кэша.warn – показывает только
предупреждения и потенциальные проблемы, которые могут привести к
некорректной работе приложения.error – выводит исключительно ошибки,
влияющие на работу сервис-воркера или стратегий кэширования. Применяется
в продакшн-сборках для минимизации объема логов.Workbox предоставляет объект workbox.core с методом
setLogLevel, позволяющим изменять уровень логирования
глобально:
import { setLogLevel } from 'workbox-core';
// Установка уровня логирования на debug
setLogLevel('debug');
Доступные значения аргумента метода setLogLevel:
'debug''info''warn''error''silent' – отключение логирования полностьюWorkbox позволяет выводить сообщения по категориям, что полезно для детальной отладки отдельных компонентов:
CacheFirst, NetworkFirst,
StaleWhileRevalidate.Пример настройки логирования для отдельных компонентов через
расширение workbox-logging:
import { logger } from 'workbox-core';
logger.debug('Routing module initialized');
logger.warn('Resource missing in cache');
В некоторых случаях необходимо изменять уровень логирования в зависимости от окружения:
import { setLogLevel } from 'workbox-core';
if (process.env.NODE_ENV === 'development') {
setLogLevel('debug');
} else {
setLogLevel('error');
}
Такой подход позволяет получать подробные сообщения во время разработки и минимизировать нагрузку на продакшн-клиент.
Workbox допускает переопределение стандартного механизма вывода логов. Можно назначить собственный обработчик для всех сообщений:
import { logger } from 'workbox-core';
logger.setHandler((level, message) => {
// Перенаправление сообщений в стороннюю систему логирования
sendToMonitoringSystem({ level, message });
});
Это особенно полезно при интеграции с аналитикой или серверными системами мониторинга.
Каждая стратегия Workbox поддерживает внутреннее логирование:
Пример включения детального логирования стратегии:
import { CacheFirst } from 'workbox-strategies';
import { registerRoute } from 'workbox-routing';
const cacheFirstStrategy = new CacheFirst({
cacheName: 'my-cache',
plugins: [
{
requestWillFetch: async ({ request }) => {
logger.debug(`Fetching request: ${request.url}`);
return request;
}
}
]
});
registerRoute(({ request }) => request.destination === 'image', cacheFirstStrategy);
debug для полного
контроля над работой сервис-воркера.warn или
error для минимизации объема логов.Настройка уровня логирования в Workbox обеспечивает прозрачность работы сервис-воркеров и стратегий кэширования, а также позволяет эффективно диагностировать и устранять проблемы на всех этапах жизненного цикла приложения.