mcpField
S
sentry-best-practices

sentry-best-practices

github.com/andrelandgraf开发2398 次安装20 周前更新
代码仓库

关于 sentry-best-practices

sentry-best-practices 是用于在应用中配置 Sentry 的开发技能,面向应用开发者。内容涵盖异常捕获、用户与事件上下文、性能追踪、面包屑及结构化日志,并提供 Sentry Next.js SDK 示例。

主要功能

  1. 01捕获已处理的异常
  2. 02附加用户、标签和额外上下文
  3. 03用 span 追踪操作
  4. 04添加自定义面包屑
  5. 05记录结构化日志

适用场景

  1. 01结合相关上下文追踪已处理错误
  2. 02为 API 请求和 UI 操作添加监测
  3. 03记录自定义事件和结构化日志

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/andrelandgraf/fullstackrecipes --skill sentry-best-practices

安装后在 Claude Code 中输入/sentry-best-practices确认已加载。

详细介绍

Sentry 最佳实践

使用 Sentry 捕获异常、添加上下文、追踪性能并记录日志。

先决条件

请先完成以下配置指南:

  • Sentry 配置
捕获异常

捕获已处理但仍值得追踪的错误。

import * as Sentry from "@sentry/nextjs";

try {
  await riskyOperation();
} catch (err) {
  Sentry.captureException(err);
}
添加上下文

setUser 会在整个会话中持续生效。为每个异常附加 tags(可索引、可筛选)和 extra(任意详细信息)。

import * as Sentry from "@sentry/nextjs";

Sentry.setUser({ id: session.user.id, email: session.user.email });

Sentry.captureException(err, {
  tags: { feature: "checkout", plan: "pro" },
  extra: { orderId: "order_123", items: cart.items },
});

退出登录时清除用户信息。

Sentry.setUser(null);
性能追踪

使用 startSpan 包裹有意义的操作。同步形式会接收用于设置属性的 span。

import * as Sentry from "@sentry/nextjs";

const users = await Sentry.startSpan(
  { op: "http.client", name: "GET /api/users" },
  async () => (await fetch("/api/users")).json(),
);

Sentry.startSpan({ op: "ui.click", name: "Submit Button Click" }, (span) => {
  span.setAttribute("form", "checkout");
  processSubmit();
});
面包屑

控制台日志、fetch 请求和 UI 点击会自动捕获。为自定义事件手动添加面包屑。

import * as Sentry from "@sentry/nextjs";

Sentry.addBreadcrumb({
  category: "auth",
  message: "User signed in",
  level: "info",
});
Sentry 日志记录器

结构化日志会显示在 Logs 标签页中。

import * as Sentry from "@sentry/nextjs";

const { logger } = Sentry;

logger.info("Payment processed", { orderId: "123", amount: 99.99 });
logger.warn("Rate limit approaching", { current: 90, max: 100 });
logger.error("Payment failed", { orderId: "123", reason: "declined" });

参考资料

评论

支持 Markdown