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/