logologo
Начало
Руководство
Разработка
Плагины
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
Начало
Руководство
Разработка
Плагины
API
logologo

Быстрый старт

Обзор разработки плагинов
Создание первого плагина
Структура каталогов проекта

Серверная разработка

Обзор
Плагин
Коллекции (таблицы данных)
Операции с базой данных
Управление источниками данных (DataSourceManager)
Управление ресурсами (ResourceManager)
Контроль доступа (ACL)
Промежуточное ПО (Middleware)
Кэш
Событие
Контекст запроса
Миграции
Логгер
Интернационализация (I18n)
Командная строка
Управление задачами Cron (CronJobManager)
Тестирование

Клиентская разработка

Обзор
Плагин
Контекст
Маршрутизатор
Контроль доступа (ACL)
Управление источниками данных (DataSourceManager)
Ресурс
Запрос
Стили и темы
Логгер
Интернационализация (I18n)
Тестирование

Прочее

Руководство по обновлению плагинов
Список языков
Управление зависимостями
Сборка
Previous PageСтили и темы
Next PageИнтернационализация (I18n)
Уведомление о переводе ИИ

Эта документация была автоматически переведена ИИ.

#Логгер

NocoBase предлагает высокопроизводительную систему логирования, основанную на pino. В любом месте, где доступен context, вы можете получить экземпляр логгера через ctx.logger для записи ключевых событий во время работы плагина или системы.

#Основное использование

// Запись критических ошибок (например, сбой инициализации)
ctx.logger.fatal('Application initialization failed', { error });

// Запись общих ошибок (например, ошибка запроса API)
ctx.logger.error('Data loading failed', { status, message });

// Запись предупреждений (например, риски производительности или исключения в действиях пользователя)
ctx.logger.warn('Current form contains unsaved changes');

// Запись общей информации о работе (например, компонент загружен)
ctx.logger.info('User profile component loaded');

// Запись отладочной информации (например, изменения состояния)
ctx.logger.debug('Current user state', { user });

// Запись подробной информации для трассировки (например, процесс рендеринга)
ctx.logger.trace('Component rendered', { component: 'UserProfile' });

Эти методы соответствуют различным уровням логирования (от высокого к низкому):

УровеньМетодОписание
fatalctx.logger.fatal()Критические ошибки, обычно приводящие к завершению работы программы
errorctx.logger.error()Ошибки, указывающие на сбой запроса или операции
warnctx.logger.warn()Предупреждения, сигнализирующие о потенциальных рисках или непредвиденных ситуациях
infoctx.logger.info()Обычная информация о работе
debugctx.logger.debug()Отладочная информация для среды разработки
tracectx.logger.trace()Подробная информация для трассировки, обычно используемая для глубокой диагностики

#Формат логов

Каждая запись лога выводится в структурированном формате JSON и по умолчанию содержит следующие поля:

ПолеТипОписание
levelnumberУровень лога
timenumberМетка времени (миллисекунды)
pidnumberID процесса
hostnamestringИмя хоста
msgstringСообщение лога
OthersobjectПользовательская контекстная информация

Пример вывода:

{
  "level": 30,
  "time": 1730540153064,
  "pid": 12765,
  "hostname": "nocobase.local",
  "msg": "HelloModel rendered",
  "a": "a"
}

#Привязка контекста

ctx.logger автоматически внедряет контекстную информацию, такую как текущий плагин, модуль или источник запроса, что позволяет более точно отслеживать происхождение логов.

plugin.context.logger.info('Plugin initialized');
model.context.logger.error('Model validation failed', { model: 'User' });

Пример вывода (с контекстом):

{
  "level": 30,
  "msg": "Plugin initialized",
  "plugin": "plugin-audit-trail"
}

#Пользовательский логгер

Вы можете создавать пользовательские экземпляры логгера в плагинах, наследуя или расширяя конфигурацию по умолчанию:

const logger = ctx.logger.child({ module: 'MyPlugin' });
logger.info('Submodule started');

Дочерние логгеры наследуют конфигурацию основного логгера и автоматически прикрепляют контекст.

#Иерархия уровней логирования

Уровни логирования Pino определяются числовыми значениями от высокого к низкому: чем меньше число, тем ниже приоритет.
Ниже представлена полная таблица иерархии уровней логирования:

Название уровняЗначениеИмя методаОписание
fatal60logger.fatal()Критические ошибки, обычно приводящие к невозможности продолжения работы программы
error50logger.error()Общие ошибки, указывающие на сбой запроса или исключения в работе
warn40logger.warn()Предупреждения, сигнализирующие о потенциальных рисках или непредвиденных ситуациях
info30logger.info()Обычная информация, фиксирующая состояние системы или нормальные операции
debug20logger.debug()Отладочная информация для анализа проблем на этапе разработки
trace10logger.trace()Подробная информация для трассировки, используемая для глубокой диагностики
silent-Infinity(нет соответствующего метода)Отключает весь вывод логов

Pino выводит только те логи, уровень которых больше или равен текущей конфигурации level. Например, если уровень логирования установлен как info, логи уровней debug и trace будут проигнорированы.

#Рекомендации по разработке плагинов

  1. Используйте контекстный логгер
    Используйте ctx.logger в контексте плагина, модели или приложения, чтобы автоматически включать информацию об источнике.

  2. Различайте уровни логирования

    • Используйте error для записи бизнес-исключений.
    • Используйте info для записи изменений состояния.
    • Используйте debug для записи отладочной информации в процессе разработки.
  3. Избегайте избыточного логирования
    Особенно на уровнях debug и trace рекомендуется включать логирование только в средах разработки.

  4. Используйте структурированные данные
    Передавайте параметры в виде объектов, а не объединяйте строки. Это упрощает анализ и фильтрацию логов.

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