我有一个自定义日志记录服务,它输出结构化日志的方式可以发送到第三方日志收集服务。我想知道什么是最好的方法来确保我捕获所有的错误,从HTTP错误,到未处理的JS错误(例如,类型错误,未捕获的拒绝承诺等),并将它们发送到所说的日志记录器。我看到的大多数示例都只解决HTTP错误。
e3bfsja21#
您可以在这里查看uncaughtException,但它与nestjs无关https://nodejs.org/docs/latest/api/process.html#process_event_uncaughtexception但要小心,因为这可能会破坏应用程序的稳定性编辑您可以利用此处所述的全局过滤器https://docs.nestjs.com/exception-filters
App.useGlobalFilters(new MyFilter())
如果要使用DI,可以使用标记将它们作为自定义提供程序添加到providers集合的appModule中
Provide: APP_FILTER, useClass: MyFilter
wkyowqbh2#
出于日志记录的目的,您可以尝试连接一个全局拦截器:
app.useGlobalInterceptors(new YourInterceptor());
在我的例子中,我使用了内置的nestjs-pino日志拦截器:
import { Logger, LoggerErrorInterceptor } from 'nestjs-pino'; // bootstrap function // const app = ... const logger = app.get(Logger); app.useLogger(logger); app.useGlobalInterceptors(new LoggerErrorInterceptor()); // ...rest
2条答案
按热度按时间e3bfsja21#
您可以在这里查看uncaughtException,但它与nestjs无关
https://nodejs.org/docs/latest/api/process.html#process_event_uncaughtexception
但要小心,因为这可能会破坏应用程序的稳定性
编辑
您可以利用此处所述的全局过滤器https://docs.nestjs.com/exception-filters
如果要使用DI,可以使用标记将它们作为自定义提供程序添加到providers集合的appModule中
wkyowqbh2#
出于日志记录的目的,您可以尝试连接一个全局拦截器:
在我的例子中,我使用了内置的nestjs-pino日志拦截器: