基础配置

SDK 有很多的配置,大部分配置是统一标准的,但是也有一些因为平台不同而造成的个性化配置。配置都是在 SDK 初始化时设置的。

配置通过一个对象传递给 init() :

  1. Sentry.init({
  2. dsn: "https://examplePublicKey@o0.ingest.sentry.io/0",
  3. maxBreadcrumbs: 50,
  4. debug: true,
  5. });

通用配置

通用选项是通过 SDK 配置的。在不同的 SDK 中,大部分配置是类似的,但是为了更好的支持不同的平台,存在一些细微的差异。配置在环境中, 或在 ~/.sentryclirc 文件(SENTRY_DSN、SENTRY_ENVIRONMENT、SENTRY_RELEASE)中的选项会被自动读取。了解更多,可以查看 Sentry 和项目

dsn

DSN 告诉 SDK 发送事件到哪里。如果没有配置,SDK 回去读取系统环境变量 SENTRY_DSN。如果也不存在,SDK 将不会发送任何事件。
如果 sentry 不是运行在一个环境进程中,这个兜底方案就会失效。

debug

如果 debug 模式打开,当发送事件异常时,SDK 会打印有用的调试信息。debug 默认是关闭的。生产环境不建议打开,尽管打开 debug 不会有安全问题。

release

有些 SDK 会自动配置 release,但是为了保证发布和部署集成、source map 上传是同步进行的,建议人工配置。发布名称必须是字符串。通过发布文档,你可以了解更多关于怎么回归历史发布版本,怎么识别有风险的代码。
默认情况下,Sentry 会读取系统环境中的 SENTRY_RELEASE 变量(在浏览器中,会读取 window.SENTRY_RELEASE 变量,如果存在的话)。

environment

这个配置没有什么限制,也没有默认值。一个发布可以关联多个环境,在 UI(比如 脚手架 vs 生产) 中做区分。
默认情况下,Sentry 会读取系统环境中的 SENTRY_ENVIRONMENT 变量(这个配置不适用浏览器 SDK)。

sampleRate

采样率是一个百分比,用来在 0.0 到 1.0 范围内发送事件。默认是 1.0,表示所有的事件都会被发送。如果设置为 0.1,表示10%的事件会被发送。发送的事件时随机抽样的。

maxBreadcrumbs

这个选项控制可以被捕获的面包屑的总数量。默认是100。

attachStacktrace

如果设置为true,调用栈会自动附加到打印的所有信息中。调用栈默认会被附加到异常中。但是如果配置了这个选项,调用栈也会随着普通信息被发送。也就是说,调用栈会和所有的打印日志一起出现。
选项默认是关闭的。
给有调用栈的事件分组是很困难的。结果,如果你为特定的事件打开or关闭这项配置,你会得到新的分组。

denyUrls

配置一个字符串数组 or 正则表达式,匹配的 url 链接将不发送事件。默认会发送所有的错误。这个选项必须是文件路径完整的匹配。

allowUrls

配置一个字符串数组 or 正则表达式,只有匹配的 url 链接会发送事件。默认会发送所有的错误。这个选项必须是文件路径完整的匹配。

集成配置

很多的平台 SDK 的集成可以和 SDK 一起配置。有些平台可以在 init() 方法中,有些有不同的模式。

integrations

有些 SDK,集成是在库初始化时通过参数配置的。了解更多,可以查看特定集成的文档。

defaultIntegrations

这个配置可以禁用默认添加的集成。如果设置为 false,默认不在添加任何集成。

钩子

这个配置可以用不同的方式,在 SDK 中添加钩子,用来自定义事件上报逻辑。

beforeSend

这个方法携带一个事件对象,并返回一个修改过的事件对象,或什么也不改。举个例子,这个可以用来在发送前去除个人敏感信息。

beforeBreadcrumb

这个方法会在面包屑被添加到 scope 时调用,并携带一个面包屑对象。如果方法没有返回,面包屑会丢失。为了传递面包屑,需要返回第一个对象。这个回调通常会有第2个参数(叫做’hint’),这个参数包含了一个用来生成面包屑的原始对象。

传输配置

传输工具用来发送事件。在一定程度上,传输工具可以个性化用来更好的支持特定的部署。

transport

这个配置怎么工作取决于 SDK。比如,它可以用来为单侧捕获事件,或发送事件时需要复杂的配置代理校验。