Перейти к основному содержимому

Введение

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

Цель

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

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

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

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

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

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

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

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

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

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

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

УровеньМетодКогда использоватьПример
TRACEtrace()Максимальная детализация, пошаговая трассировкаПроверка цепочки вызовов
DEBUGdebug()Отладочная информация о логике работыВывод промежуточных данных
INFOlog()Обычные события нормальной работыСоздание проекта
WARNwarn()Нежелательные, но некритичные ситуацииОтказ в доступе
ERRORerror()Ошибки, требующие внимания и реакцииИсключение при сохранении
FATALfatal()Критические сбои, приводящие к остановке приложенияПотеря соединения с базой данных

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

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

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

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

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

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

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