Files
docs/docs/55-logging/01-overview.md
T
2026-06-16 15:43:18 +03:00

5.0 KiB

Введение

Зачем нужно логирование

Цель

Логирование — это ключевой инструмент диагностики и анализа поведения системы. Оно фиксирует действия, ошибки и события, позволяя:

  • анализировать поведение приложения;
  • находить причины ошибок и сбоев;
  • отслеживать бизнес-процессы (например, запуск конкурса или назначение эксперта);
  • проводить аудит действий пользователей;
  • контролировать производительность и стабильность работы.

Хорошее логирование даёт контекст и доказательства — кто, когда и что сделал, с каким результатом.

Основные задачи логирования

Логирование решает как технические, так и организационные задачи.

Технические:

  • Диагностика: восстановление хода событий при сбое.
  • Аналитика: понимание того, как система используется.
  • Поддержка: ускорение поиска причин ошибок в эксплуатации.

Организационные:

  • Аудит: фиксация действий пользователей и администраторов.
  • Безопасность: выявление попыток несанкционированного доступа.

Уровни логирования

В системе используется библиотека Pino, интегрированная через nestjs-pino. Она поддерживает стандартные уровни логирования, отражающие важность события.

Уровень Метод Когда использовать Пример
TRACE trace() Максимальная детализация, пошаговая трассировка Проверка цепочки вызовов
DEBUG debug() Отладочная информация о логике работы Вывод промежуточных данных
INFO log() Обычные события нормальной работы Создание проекта
WARN warn() Нежелательные, но некритичные ситуации Отказ в доступе
ERROR error() Ошибки, требующие внимания и реакции Исключение при сохранении
FATAL fatal() Критические сбои, приводящие к остановке приложения Потеря соединения с базой данных

💡 Все уровни логов фиксируются одинаково по структуре данных — различается только их важность.

Различие между dev и prod

Логирование настроено так, чтобы быть удобным в разработке и эффективным в продакшене.

Среда Формат Уровень по умолчанию Особенности
Development человеко-читаемый debug Цвета, отступы, подробные данные — удобно для чтения в консоли.
Production JSON info Машиночитаемый формат для централизованной агрегации и анализа логов.

Состав данных в логе всегда одинаков — меняется только способ отображения. Уровень логирования можно переопределить через переменные окружения.

Таким образом:

  • в разработке акцент на удобство восприятия и диагностику;
  • в продакшене — на структурированные данные и интеграцию с системами мониторинга (например, Loki или ELK).