Настройка уровня логирования

Workbox предоставляет мощный и гибкий механизм логирования, позволяющий отслеживать работу сервис-воркера, кэширование ресурсов и обработку запросов. Управление уровнем логирования критично для диагностики проблем и оптимизации производительности приложений.

Основные уровни логирования

Workbox использует несколько уровней логирования, которые контролируют количество и тип выводимой информации:

  1. debug – максимально подробный уровень. Отображает детальные сообщения о работе стратегий кэширования, маршрутизации и событиях сервис-воркера. Используется преимущественно в процессе разработки.
  2. info – стандартный уровень, включающий ключевые события и состояния Workbox, такие как установка и активация сервис-воркера, успешное кэширование ресурсов и обновление кэша.
  3. warn – показывает только предупреждения и потенциальные проблемы, которые могут привести к некорректной работе приложения.
  4. error – выводит исключительно ошибки, влияющие на работу сервис-воркера или стратегий кэширования. Применяется в продакшн-сборках для минимизации объема логов.

Настройка уровня логирования

Workbox предоставляет объект workbox.core с методом setLogLevel, позволяющим изменять уровень логирования глобально:

import { setLogLevel } from 'workbox-core';

// Установка уровня логирования на debug
setLogLevel('debug');

Доступные значения аргумента метода setLogLevel:

  • 'debug'
  • 'info'
  • 'warn'
  • 'error'
  • 'silent' – отключение логирования полностью

Логирование по категориям

Workbox позволяет выводить сообщения по категориям, что полезно для детальной отладки отдельных компонентов:

  • Routing – маршрутизация запросов к соответствующим стратегиям.
  • Caching – кэширование ресурсов, добавление и удаление из кэша.
  • Strategies – применение стратегий работы с сетью и кэшем, включая CacheFirst, NetworkFirst, StaleWhileRevalidate.
  • BackgroundSync – обработка отложенной синхронизации данных.

Пример настройки логирования для отдельных компонентов через расширение 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 поддерживает внутреннее логирование:

  • CacheFirst выводит информацию о кэше и сети, если ресурс найден в кэше или получен из сети.
  • NetworkFirst логирует время ожидания сети, успешные и неудачные попытки получения ресурсов.
  • StaleWhileRevalidate отображает сообщения о быстром возврате кэшированного ответа и асинхронной проверке обновлений на сервере.

Пример включения детального логирования стратегии:

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 обеспечивает прозрачность работы сервис-воркеров и стратегий кэширования, а также позволяет эффективно диагностировать и устранять проблемы на всех этапах жизненного цикла приложения.