Node.js

安装 npm install @blipit/node

@blipit/node 自动捕获未捕获的异常和未处理的 promise rejection,为 Express 和 Fastify 提供 handler,并用同一个密钥发送日志和登录尝试。使用私密密钥;它留在服务器上。

1安装

sh
npm install @blipit/node

2先初始化

把这段代码放在一个在你的应用之前运行的文件中,并最先导入它。

instrument.mjs
import * as Blipit from "@blipit/node";

Blipit.init({
  key: process.env.BLIPIT_SECRET_KEY,
  environment: process.env.NODE_ENV,
  release: process.env.RELEASE,
  serverName: "api",
});

3Express 或 Fastify

在路由之后添加 handler,这样已处理和未处理的错误都会到达 Blipit,并附带请求的方法、URL 和 user agent。

js
import "./instrument.mjs";
import * as Blipit from "@blipit/node";
import express from "express";

const app = express();
app.get("/", (req, res) => res.send("ok"));
app.use(Blipit.expressErrorHandler());
app.listen(3000);
Fastify
await app.register(Blipit.fastifyPlugin());

4手动捕获、日志和登录尝试

js
Blipit.captureException(err);
Blipit.captureMessage("cache miss rate above 50%", "warning");
Blipit.setUser({ id: "user-42" });
Blipit.log.info("order placed", { order_id: 42 });
Blipit.captureSecurity({ kind: "login_failed", actor: email, ip, userAgent, outcome: "bad_password" });
await Blipit.flush();

5验证是否生效

打开 app.blipit.io 中的“问题”。首个事件几秒钟内就会出现,并归组为一个问题,负责人会收到邮件。

js
Blipit.captureMessage("Hello from Node");

须知

  • 遇到未捕获的异常时,SDK 会先发送待处理的事件,然后以代码 1 退出;可通过 onFatal 覆盖。
  • captureConsole: true 会把 console.log 及同类调用转为日志行,发送到日志页面。
  • 已经在用 @sentry/node?无需更改即可使用 DSN https://<public key>@in.blipit.io/<project id>。

遇到问题?发邮件至 support@blipit.io。每个项目的密钥和确切的 DSN 在 app.blipit.io 的“API 密钥”下。