node.js - 有谁知道如何在 NestJS 中实现 Honeybadger 日志记录?

标签 node.js express logging nestjs

NestJS 使用express,Honeybadger 有一个express 中间件,但我似乎不知道如何实现它。目前我的 main.ts 文件如下所示

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { ConfigService } from '@nestjs/config';
import * as Honeybadger from 'honeybadger';

Honeybadger.configure({
  apiKey: '??hidden for security reasons??'
})

async function bootstrap() {
  const app = await NestFactory.create(AppModule, {
    logger: false,
  });
  app.use(Honeybadger.requestHandler);
  app.use(Honeybadger.errorHandler);
  const configService = app.get(ConfigService);
  await app.listen(configService.get('PORT'));
}

bootstrap();

最佳答案

对于后来发现这个问题的人,我找到了一种适合我的方法。

创建一个扩展 ConsoleLogger 类的新记录器,并在出现错误时调用 Honeybadger.notify(),如下所示:

import { ConsoleLogger } from '@nestjs/common';
import * as Honeybadger from '@honeybadger-io/js';

export class CustomLogger extends ConsoleLogger {
  error(message: any, stack?: string, context?: string) {
    Honeybadger.notify(message);
    super.error(message);
  }
}

然后为应用程序注册新的记录器,配置 HoneyBadger 并使用它的请求处理程序:

..
import * as Honeybadger from '@honeybadger-io/js';
import { CustomLogger } from './customLogger';

async function bootstrap() {
  const app = await NestFactory.create<NestExpressApplication>(AppModule, {
    logger: new CustomLogger(),
  });

  Honeybadger.configure({ apiKey: process.env.HONEYBADGER_API_KEY });
  app.use(Honeybadger.requestHandler);

  //Listen on port 3000
  await app.listen(3000);
}
bootstrap();

您的应用程序将通知 Honeybadger 错误消息,并仍然在控制台记录任何错误。

关于node.js - 有谁知道如何在 NestJS 中实现 Honeybadger 日志记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62524884/

相关文章:

Java logback 嵌套变量替换

node.js - 如何将 eventGrid 添加到 NodeJS 中 Azure Functions 中的 http 触发器?

javascript - 将 JSON 从 API 转换为事件流

javascript - 将对象数组过滤为 mongodb/meteor 中的单个匹配对象

c# - 执行错误记录的简单方法?

django - 如何通过日志过滤掉 GET 静态和媒体消息?

node.js - 未收到从 azure-event-hubs onMessage 函数发送的 azure-iothub 消息

node.js - 如何使用express和multer将图像从Angular发送到Node JS?

javascript - 无法读取路由参数中未定义的属性 'name'

node.js - Express-Validator 检查子文档数组