最近做的一个公司项目,使用 nestjs 作为服务端,为了收集服务报错,尝试了一下接入 sentry。整个流程也是比较简单,sentry 的功能也真的很强大。
开始之前需要一个 sentry 账号。
创建项目
首先选择一个开发平台,这里没有 nestjs(可能还是比较小众吧),我们可以直接选择 node;然后填写项目名称,owner 等信息
客户端集成
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app/app.module';
import * as Sentry from '@sentry/node';
import CONFIG from '@Root/config';
const { APP_PORT, APP_ENV } = CONFIG;
async function bootstrap() {
const app = await NestFactory.create(AppModule);
// 本地开发环境报错不上传至 sentry
if (APP_ENV !== 'dev') {
Sentry.init({
dsn: 'https://yourSentry.com/6',
tracesSampleRate: 1.0,
environment: APP_ENV,
});
}
await app.listen(APP_PORT);
}
bootstrap();
- dsn:指定 sentry SDK 向哪里发送这些异常事件
- tracesSampleRate:跟踪采样率,为 0 到 1 之间的数字。假如为 0.2,大约 20% 的错误将被记录和发送
- environment:隔离不同环境,方便查询
错误收集
通过以上配置基本可以上报错误了,然后通过 sentry 控制台看到相关的错误信息及代码定位。
🌴 注意:如果是前端项目,需要上传 sourceMap 至 sentry 服务器, 但是 Node 项目一般没有源码转换(压缩、合并文件和转译),并不需要这样操作