Эта документация была автоматически переведена ИИ.
NocoBase предлагает высокопроизводительную систему логирования, основанную на pino. В любом месте, где доступен context, вы можете получить экземпляр логгера через ctx.logger для записи ключевых событий во время работы плагина или системы.
Эти методы соответствуют различным уровням логирования (от высокого к низкому):
| Уровень | Метод | Описание |
|---|---|---|
fatal | ctx.logger.fatal() | Критические ошибки, обычно приводящие к завершению работы программы |
error | ctx.logger.error() | Ошибки, указывающие на сбой запроса или операции |
warn | ctx.logger.warn() | Предупреждения, сигнализирующие о потенциальных рисках или непредвиденных ситуациях |
info | ctx.logger.info() | Обычная информация о работе |
debug | ctx.logger.debug() | Отладочная информация для среды разработки |
trace | ctx.logger.trace() | Подробная информация для трассировки, обычно используемая для глубокой диагностики |
Каждая запись лога выводится в структурированном формате JSON и по умолчанию содержит следующие поля:
| Поле | Тип | Описание |
|---|---|---|
level | number | Уровень лога |
time | number | Метка времени (миллисекунды) |
pid | number | ID процесса |
hostname | string | Имя хоста |
msg | string | Сообщение лога |
Others | object | Пользовательская контекстная информация |
Пример вывода:
ctx.logger автоматически внедряет контекстную информацию, такую как текущий плагин, модуль или источник запроса, что позволяет более точно отслеживать происхождение логов.
Пример вывода (с контекстом):
Вы можете создавать пользовательские экземпляры логгера в плагинах, наследуя или расширяя конфигурацию по умолчанию:
Дочерние логгеры наследуют конфигурацию основного логгера и автоматически прикрепляют контекст.
Уровни логирования Pino определяются числовыми значениями от высокого к низкому: чем меньше число, тем ниже приоритет.
Ниже представлена полная таблица иерархии уровней логирования:
| Название уровня | Значение | Имя метода | Описание |
|---|---|---|---|
fatal | 60 | logger.fatal() | Критические ошибки, обычно приводящие к невозможности продолжения работы программы |
error | 50 | logger.error() | Общие ошибки, указывающие на сбой запроса или исключения в работе |
warn | 40 | logger.warn() | Предупреждения, сигнализирующие о потенциальных рисках или непредвиденных ситуациях |
info | 30 | logger.info() | Обычная информация, фиксирующая состояние системы или нормальные операции |
debug | 20 | logger.debug() | Отладочная информация для анализа проблем на этапе разработки |
trace | 10 | logger.trace() | Подробная информация для трассировки, используемая для глубокой диагностики |
silent | -Infinity | (нет соответствующего метода) | Отключает весь вывод логов |
Pino выводит только те логи, уровень которых больше или равен текущей конфигурации level. Например, если уровень логирования установлен как info, логи уровней debug и trace будут проигнорированы.
Используйте контекстный логгер
Используйте ctx.logger в контексте плагина, модели или приложения, чтобы автоматически включать информацию об источнике.
Различайте уровни логирования
error для записи бизнес-исключений.info для записи изменений состояния.debug для записи отладочной информации в процессе разработки.Избегайте избыточного логирования
Особенно на уровнях debug и trace рекомендуется включать логирование только в средах разработки.
Используйте структурированные данные
Передавайте параметры в виде объектов, а не объединяйте строки. Это упрощает анализ и фильтрацию логов.
Следуя этим рекомендациям, разработчики смогут более эффективно отслеживать выполнение плагинов, устранять проблемы и поддерживать структурированность и расширяемость системы логирования.