Ця документація була автоматично перекладена штучним інтелектом.
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 | Повідомлення логу |
| Інші | 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 рекомендується вмикати їх лише в середовищах розробки.
Використовуйте структуровані дані
Передавайте об'єктні параметри замість об'єднання рядків, це допомагає в аналізі та фільтрації логів.
Дотримуючись цих практик, розробники можуть ефективніше відстежувати виконання плагінів, усувати проблеми та підтримувати структурованість і розширюваність системи логування.