Sentry 插件
该插件可让你将 Sentry 无缝集成到 Payload 应用中。
什么是 Sentry?
Sentry 是一个强大的错误追踪和性能监控工具,可帮助开发者识别、诊断和解决应用中的问题。
Sentry 能智能处理错误数据,使问题更易发现和修复。- sentry.io
这款多功能软件提供了一系列特性,能帮助你更轻松地管理错误,最终确保应用平稳运行:
核心功能
- 错误追踪:实时捕获并记录应用中发生的错误
- 性能监控:追踪应用性能,识别速度下降和瓶颈
- 详细报告:提供全面的错误分析,包括堆栈追踪和上下文
- 警报与通知:发送并自定义事件触发的通知
- 问题分组、筛选与搜索:自动分组相似错误,并支持按自定义条件筛选和搜索问题
- 操作痕迹:记录导致错误的用户操作和事件
- 集成能力:连接多种工具和服务,增强工作流和问题管理
安装
使用任意 JavaScript 包管理器(如 pnpm、npm 或 Yarn)安装该插件:
pnpm add @payloadcms/plugin-sentry
Next.js 的 Sentry 配置
在使用此插件前,需要先完成 Sentry + Next.js 配置。
你可以使用安装向导进行自动配置:
npx @sentry/wizard@latest -i nextjs
或者进行手动配置
基本用法
在你的 Payload 配置的 plugins
数组中调用该插件,并将你的 Sentry DSN 作为选项传入。
import { buildConfig } from 'payload'
import { sentryPlugin } from '@payloadcms/plugin-sentry'
import { Pages, Media } from './collections'
import * as Sentry from '@sentry/nextjs'
const config = buildConfig({
collections: [Pages, Media],
plugins: [
sentryPlugin({
Sentry,
}),
],
})
export default config
选项
-
Sentry
: Sentry | 必填Sentry
实例
请确保在使用前完成 Next.js 的 Sentry 配置。
-
enabled
: boolean | 可选设置为 false 可禁用该插件。默认为
true
。 -
context
:(args: ContextArgs) => Partial<ScopeContext> | Promise<Partial<ScopeContext>>
向 Sentry 传递额外的上下文数据
-
captureErrors
: number[] | 可选默认情况下,
Sentry.errorHandler
只会捕获状态码为 500 或更高的错误。要捕获其他错误代码,请以数字数组的形式传入这些值。
示例
通过将这些选项传递给插件来进行配置:
import { buildConfig } from 'payload'
import { sentryPlugin } from '@payloadcms/plugin-sentry'
import * as Sentry from '@sentry/nextjs'
import { Pages, Media } from './collections'
const config = buildConfig({
collections: [Pages, Media],
plugins: [
sentryPlugin({
options: {
captureErrors: [400, 403],
context: ({ defaultContext, req }) => {
return {
...defaultContext,
tags: {
locale: req.locale,
},
}
},
debug: true,
},
Sentry,
}),
],
})
export default config
TypeScript
所有类型都可以直接导入:
import { PluginOptions } from '@payloadcms/plugin-sentry'