Sentry 插件

https://www.npmjs.com/package/@payloadcms/plugin-sentry

该插件可让你将 Sentry 无缝集成到 Payload 应用中。

什么是 Sentry?

Sentry 是一个强大的错误追踪和性能监控工具,可帮助开发者识别、诊断和解决应用中的问题。

Sentry 能智能处理错误数据,使问题更易发现和修复。- sentry.io

这款多功能软件提供了一系列特性,能帮助你更轻松地管理错误,最终确保应用平稳运行:

核心功能

  • 错误追踪:实时捕获并记录应用中发生的错误
  • 性能监控:追踪应用性能,识别速度下降和瓶颈
  • 详细报告:提供全面的错误分析,包括堆栈追踪和上下文
  • 警报与通知:发送并自定义事件触发的通知
  • 问题分组、筛选与搜索:自动分组相似错误,并支持按自定义条件筛选和搜索问题
  • 操作痕迹:记录导致错误的用户操作和事件
  • 集成能力:连接多种工具和服务,增强工作流和问题管理

该插件完全开源,源代码可在此处查看。 如需帮助,请查阅我们的社区支持。如发现漏洞, 请提交新问题并提供尽可能多的细节。

安装

使用任意 JavaScript 包管理器(如 pnpmnpmYarn)安装该插件:

  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'