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).