Log levels

Фреймворк Fresh для JavaScript предлагает встроенный механизм логирования, который позволяет детально отслеживать поведение приложения на разных этапах выполнения. Важным аспектом организации логов является использование уровней логирования, позволяющих классифицировать сообщения по степени важности и назначению.


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

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

  1. TRACE Наиболее подробный уровень, используемый для отслеживания мелких деталей работы приложения. Включает информацию о каждом вызове функций, передаваемых параметрах и внутренних процессах. Полезен при глубокой отладке.

  2. DEBUG Содержит сообщения для разработчика, которые помогают понять, что происходит внутри приложения. Обычно включает состояние переменных, шаги выполнения бизнес-логики и промежуточные вычисления.

  3. INFO Служит для логирования значимых событий в приложении, таких как запуск серверов, успешные подключения к базе данных или обработка запросов. Используется для мониторинга работы приложения без излишней детализации.

  4. WARN Отображает потенциально проблемные ситуации, которые не прерывают работу приложения, но могут привести к ошибкам. Например, использование устаревших API, неожиданные значения параметров или небольшие ошибки в обработке данных.

  5. ERROR Сообщает о критических ошибках, которые требуют немедленного вмешательства. Сюда входят исключения, сбои при подключении к внешним сервисам, ошибки при работе с базой данных. Часто сопровождается стек-трейсом.

  6. FATAL Наиболее высокий уровень, сигнализирующий о необратимых ошибках, которые приводят к остановке приложения. Используется крайне редко, только в случаях полного сбоя системы.


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

Fresh позволяет гибко настраивать уровень логирования через конфигурацию. Настройка уровня определяет, какие сообщения будут выводиться в консоль или записываться в файл. Все сообщения уровней выше или равные заданному будут логироваться.

import { log } from "fresh";

log.setLevel("DEBUG");

log.debug("Это сообщение уровня DEBUG");
log.info("Это сообщение уровня INFO");
log.warn("Это сообщение уровня WARN");

В примере выше, при установленном уровне DEBUG, будут отображаться сообщения уровней DEBUG, INFO, WARN, ERROR и FATAL. Сообщения уровня TRACE игнорируются.


Контекст логов и метки

Для удобства анализа логов Fresh поддерживает контексты и метки, которые позволяют группировать сообщения по компонентам приложения. Контекст обычно отражает модуль или функциональный блок, а метка — конкретное действие или процесс.

log.info({ context: "database", label: "connection" }, "Подключение к базе данных выполнено успешно");

Такой подход облегчает фильтрацию и поиск сообщений в больших логах.


Форматы вывода

Fresh поддерживает различные форматы логирования:

  • Консольный вывод — стандартное отображение в терминале с цветовой маркировкой уровней.
  • JSON-логи — структурированные данные, удобные для интеграции с внешними системами мониторинга, такими как ELK Stack или Grafana.
  • Файловый лог — запись логов в файлы для последующего анализа.

Настройка формата производится через объект конфигурации:

log.configure({
  format: "json",
  output: "logs/app.log",
});

Практические рекомендации

  • Для разработки рекомендуется использовать уровни DEBUG или TRACE, чтобы отслеживать все детали работы.
  • Для production-окружения оптимально устанавливать уровень INFO или WARN, чтобы логировать только важные события и ошибки.
  • Включение ERROR и FATAL обязательно для критических сервисов, чтобы своевременно выявлять сбои.
  • Использование контекстов и меток повышает читаемость логов и упрощает диагностику проблем в сложных приложениях.

Интеграция с внешними системами

Fresh легко интегрируется с системами централизованного логирования. JSON-формат позволяет отправлять сообщения напрямую в:

  • Logstash
  • Grafana Loki
  • Prometheus с Alertmanager
  • Sentry и другие системы мониторинга ошибок

Такая интеграция позволяет создавать дашборды, строить метрики по уровням логирования и оперативно реагировать на критические события.


Заключение по уровню логов

Система уровней логирования в Fresh обеспечивает баланс между информативностью и производительностью. Правильная настройка уровней, контекстов и форматов вывода позволяет получать структурированные, легко анализируемые данные о работе приложения, ускоряет диагностику ошибок и улучшает мониторинг в реальном времени.