后端与接口
在 Next.js 中接入 Sentry 做异常监控…
适用于 Next.js 项目使用 @sentry/nextjs,捕获异常、追踪关键操作性能,并配置日志集成与结构化日志。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
在 Next.js 中接入 Sentry特定
解决思路
- 在 try/catch 中用 `Sentry.captureException(error)` 捕获异常;例如:`try { await riskyOperation(); } catch (error) { Sentry.captureException(error); throw error; }`。
- 为有意义的操作创建 span,例如按钮点击、API 调用和函数调用。
- UI 操作追踪:在事件处理函数中调用 `Sentry.startSpan({ op: "ui.click", name: "Submit Form" }, (span) => { span.setAttribute("formId", formId); submitForm(); });`。
- API 调用追踪:用 `Sentry.startSpan({ op: "http.client", name: `GET /api/items/${id}` }, async () => { const response = await fetch(`/api/items/${id}`); return response.json(); });` 包裹异步请求。
- Next.js 初始化文件:客户端使用 `sentry.client.config.ts`,服务端使用 `sentry.server.config.ts`,Edge runtime 使用 `sentry.edge.config.ts`。
- 通过 `import * as Sentry from "@sentry/nextjs"` 引入;无需在其他文件中初始化。
- 基础初始化:`Sentry.init({ dsn: process.env.NEXT_PUBLIC_SENTRY_DSN, enableLogs: true });`。
- 带控制台日志集成初始化:`Sentry.init({ dsn: process.env.NEXT_PUBLIC_SENTRY_DSN, integrations: [Sentry.consoleLoggingIntegration({ levels: ["log", "warn", "error"] })] });`。
- 结构化日志中,对包含变量的模板字面量使用 `logger.fmt`。
- 结构化日志示例:`const { logger } = Sentry; logger.trace("Starting connection", { database: "users" }); logger.debug(logger.fmt`Cache miss for: ${userId}`); logger.info("Updated profile", { profileId: 345 }); logger.warn("Rate limit reached", { endpoint: "/api/data" }); logger.error("Payment failed", { orderId: "order_123" }); logger.fatal("Connection pool exhausted", { activeConnections: 100 });`。
适用边界 · 注意事项
- 不适用于非 Next.js 应用或未使用 @sentry/nextjs 的项目。
- 未接入 Sentry、没有 DSN 或不允许向 Sentry 发送数据时,不要按此配置。
- 仅需本地调试、无需远程错误监控与性能追踪时,不必引入 Sentry。