Логирование
NocoBase предоставляет высокопроизводительную систему логирования на базе pino. В любом месте, где доступен context, вы можете получить экземпляр логгера через ctx.logger и записывать ключевые события во время работы плагина или системы.
Базовое использование
Эти методы соответствуют разным уровням логирования (от высокого к низкому):
Формат логов
Каждая запись лога выводится в структурированном формате JSON и по умолчанию содержит следующие поля:
Пример вывода:
Привязка контекста
ctx.logger автоматически добавляет контекстную информацию, такую как текущий плагин, модуль или источник запроса, что позволяет точнее отслеживать происхождение логов.
Пример вывода (с контекстом):
Пользовательский логгер
В плагинах можно создавать собственные экземпляры логгера, наследуя или расширяя конфигурацию по умолчанию:
Дочерние логгеры наследуют конфигурацию основного логгера и автоматически добавляют контекст.
Иерархия уровней логирования
Уровни логирования Pino определяются численно от высокого к низкому, где меньшие значения означают более низкий приоритет. Ниже приведена полная иерархия уровней:
Pino выводит только логи, уровень которых больше или равен текущей конфигурации level. Например, если установлен уровень info, логи debug и trace будут игнорироваться.
Лучшие практики в разработке плагинов
-
Используйте контекстный логгер
Используйтеctx.loggerв контексте плагина, модели или приложения, чтобы автоматически добавлять информацию об источнике. -
Разделяйте уровни логирования
- Используйте
errorдля записи бизнес-исключений - Используйте
infoдля записи изменений состояния - Используйте
debugдля отладочной информации на этапе разработки
- Используйте
-
Избегайте избыточного логирования
Особенно для уровнейdebugиtrace: рекомендуется включать их только в среде разработки. -
Используйте структурированные данные
Передавайте параметры в виде объектов вместо конкатенации строк — это упрощает анализ и фильтрацию логов.
Следуя этим практикам, разработчики смогут эффективнее отслеживать выполнение плагинов, устранять проблемы и поддерживать структурированную и расширяемую систему логирования.

