NestJS
The ClickStack NestJS integration allows you to create a logger or use the default logger to send logs to ClickStack (powered by 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 服务:
然后只需通过类型提示将日志记录器注入,使用 @nestjs/common 中的 Logger: