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
: