NestJS
Интеграция ClickStack с NestJS позволяет создать логгер или использовать логгер по умолчанию для отправки логов в ClickStack (на базе nest-winston).
В этом руководстве интегрируются:
| ✅ Логи | ✖️ Метрики | ✖️ Трейсы |
Чтобы отправлять метрики или APM/трейсы, вам также потребуется добавить соответствующую интеграцию для выбранного языка в ваше приложение.
Начало работы
Импортируйте HyperDXNestLoggerModule в корневой AppModule и используйте метод forRoot() для его конфигурации.
После этого экземпляр логгера winston будет доступен для внедрения во всём проекте с использованием токена для внедрения HDX_LOGGER_MODULE_PROVIDER:
Замена логгера Nest (также для начальной загрузки)
Делая это, вы отказываетесь от внедрения зависимостей, а значит, forRoot и forRootAsync больше не нужны и не должны использоваться. Удалите их из вашего основного модуля.
Использование внедрения зависимостей имеет один небольшой недостаток. Nest сначала должен выполнить начальную загрузку приложения (создать экземпляры модулей и провайдеров, внедрить зависимости и т. д.), и в ходе этого процесса экземпляр HyperDXNestLogger ещё недоступен, что означает, что Nest использует внутренний логгер.
Одно из решений — создать логгер вне жизненного цикла приложения, используя
функцию createLogger, и передать его в NestFactory.create. Затем Nest
обернёт наш кастомный логгер (тот же экземпляр, возвращаемый методом createLogger)
в класс Logger, перенаправляя ему все вызовы:
Создайте логгер в файле main.ts
Измените основной модуль, чтобы он предоставлял сервис Logger:
Затем просто внедрите логгер, указав его тип как Logger из @nestjs/common: