sentry 配置sentry-Configuration

你需要在开始使用之前,使用 Sentry DSN 配置 Raven.js:

Raven.config('https://<key>@sentry.io/<project>').install()

现在,Reven 就可以开始捕获所有 uncaught exception 了。

可选配置

Reven.config() 可以接受更多参数来进行额外配置:

Raven.config('https://<key>@sentry.io/<project>', {

    release: '1.3.0'

}).install()

配置选项如下文所示:

logger

供 Sentry 使用的 logger 名称。默认: javascript

{
  logger: 'javascript'
}

release

在 Sentry 中跟踪你的应用版本。

{
  release: '721e41770371db95eee98ca2707686226b993eda'
}

也可以这样定义:

Raven.setRelease('721e41770371db95eee98ca2707686226b993eda')

environment

在 Sentry 中跟踪环境名称。

{
  environment: 'production'
}

serverName

1.3.0 新加特性。

通常,这会是服务器名称,然而不是所有平台都有服务器名称。所以,你可能会使用像 device ID 这样的值来标明客户端运行在哪个设备上。

{
  serverName: device.uuid
}

tags

分配给每个事件的额外 tags.

{
  tags: {git_commit: 'c0deb10c4'}
}

whitelistUrls

和 ignoreUrls 相反。仅在所有匹配正则或字符串的 URL 中上报错误。 whitelistUrls 应该和你真正使用的 JavaScript 文件相匹配。当且仅当你在 <script> 标签中内联代码时,它应该和你的站点 URL 相匹配。不设置这个值,意味着会捕捉所有错误,且不会过滤任何值。

{
  whitelistUrls: [/getsentry\.com/, /cdn\.getsentry\.com/]
}

ignoreErrors

你可能常常会遇到一些由于你的应用程序之外的原因导致的特定错误,或者你完全不感兴趣的错误。ignoreErrors 是一个正则或字符串列表,用于这些错误被发送到 Sentry 前,把它们过滤掉。当使用字符串时,它们将部分匹配错误消息,如果如果你希望精确匹配,请使用正则表达式。

{
  ignoreErrors: ['fb_xd_fragment', /^Exact Match Message$/]
}

ignoreUrls

和 whitelistUrls 相反,和 ignoreErrors 类似,但是将忽略所有匹配到正则或字符串的 URL 中的错误。

{
  ignoreUrls: [/graph\.facebook\.com/, 'http://example.com/script2.js']
}

includePaths

一个正则数组,用于在 stack trace 里指明哪些 URL 是你 app 的一部分。在 Sentry 中,其他结构会折叠显示,以便于你分辨发生在你代码中的架构,和发生在其他代码中的结构。建议添加当前页面的 URL,以及你 CDN 的 host.

{
    includePaths: [/https?:\/\/getsentry\.com/, /https?:\/\/cdn\.getsentry\.com/]
}

sampleRate

应用到所有事件的抽样率。 0.0 将不会发送任何事件,1.0 会发送所有事件(默认)。

{
    sampleRate: 0.5 // send 50% of events, drop the other half
}

sanitizeKeys

一个字符串或正则数组,表示应该从发送到 Sentry 中的载荷数据中的每一项,然后把值用 ******** 替换掉。这仅会匹配对象的 key,不会匹配 value. Sentry 也会在服务器端净化所有发给它的时间,但是该配置允许你在把数据发送到服务器端之前擦除数据。

{
    sanitizeKeys: [/_token$/, /password/i, 'someHidiousKey']
}

dataCallback

一个可以在数据载荷被发送到 Sentry 之前进行转换的函数。

{
    dataCallback: function(data) {
      // do something to data
      return data;
    }
}

breadcrumbCallback

一个可以过滤或转换 breadcrumb 载荷的函数。返回 false 会扔掉 breadcrumb.

{
    breadcrumbCallback: function(crumb) {
      if (crumb.type === 'http') {
        return crumb;
      }
      return false;
    }
}

shouldSendCallback

该回调函数可以让你使用自定义的过滤器来决定一个消息是否要被发送到 Sentry.

{
    shouldSendCallback: function(data) {
      return false;
    }
}

maxMessageLength

默认情况下,Raven 不会裁剪信息。如果你因为种种原因需要裁剪字符,你可以使用这个配置来控制长度。

maxUrlLength

默认情况下,Raven 将会把显示在 breadcrumb 或其他 meta 接口中的 URL 裁剪到 250 个字符来减小数据里。这不会影响 stack trace 中的 URL.

autoBreadcrumbs

开启/关闭 自动 breadcrumb 收集。可选值:

  • true (默认)
  • false - 关闭所有 breadcrumb 手机
  • 一个独立 breadcrumb 类型的字典来控制每一项的开启/关闭:
autoBreadcrumbs: {
    'xhr': false,      // XMLHttpRequest
    'console': false,  // console logging
    'dom': true,       // DOM interactions, i.e. clicks/typing
    'location': false, // url changes, including pushState/popState
    'sentry': true     // sentry events
}

maxBreadcrumbs

默认情况下,Raven 会捕获 100 个 breadcrumbs 项目。如果你觉得这太多了,你可以通过设置 maxBreadcrumbs 减少这个值。注意,这个值不能大于默认值 100.

captrueUnhandledRejections

默认情况下,Raven 会使用标准的 unhandledrejection 事件捕获所有 unhandled promise rejections. 如果你关闭这个特性,设置这个选项为 false.

transport

重写默认的 HTTP 数据传输处理。

你也可以使用 Raven.setTransport(myTransportFunction) 来配置。

{
    transport: function (options) {
        // send data
    }
}

这个函数接受一个参数 options,具有下面的属性:

url

要被发送到的 url

data

发出的异常数据。

对于 POST 请求,它应该是 JSON-encoded 数据,且设置为 HTTP 包的 body(Content-type: application/json)

对于 GET 请求,它应该是 JSON-encoded 数据,作为URL参数 sentry_data 的值发送。

auth

一个表达认证数据的对象。无论对于 GET 还是 POST 请求,它都应该被转换成一个 urlencoded 的键值对,且作为 url 参数的一部分传递。

auth 对象包含下面的属性:

sentry_version

Sentry 服务器的 API 版本

sentry_client

client/version 形式的 Sentry 客户端的名字和版本。在本例中,是 raven-js/${Raven.VERSION}

sentry_key

你的公共客户端key(DSN)

options

包括描述过的所有顶级选项。

onSuccess

成功请求后被调用的回调。

onError

失败请求后被调用的回调。

headers

对 fetch 或 XMLHttpRequest 传入自定义的请求头。

{
    headers: {
        'CSRF-TOKEN': '12345'
    }
}

请求头的值也可以是函数,用于在每次请求时,实时计算值:

{
    headers: {
        'CSRF-TOKEN': function() {
            // custom logic that will be computed on every request
            return new Date();
        }
    }
}

fetchParameters

fetch() 的初始化参数 (https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters).

默认:

{
    method: 'POST',
    keepalive: true,
    referrerPolicy: 'origin'
}

allowDuplicates

默认情况下,Raven.js 会尝试阻止大量反复发生的重复错误和消息上报。这些时间经常由异常代码触发(如,发生在一个浏览器扩展的 setInterval 回调中),没有什么应用价值,而且会吞噬你的时间配额。

要关掉这个特定(例如,用于测试目的),在配置时,把该项设置为 tru

allowSecretKey

默认情况下,如果你配置了一个包含私钥的的 Sentry DSN, Reven.js 会抛出一个错误。当在一个通过浏览器公网访问的 web 应用中使用 Raven.js 时,你应该仅使用你的公共 DSN. 但是如果你在像是 React Native 或 Electron 这样的环境中使用 Raven.js 时,你的应用是在设备上“本地”运行,且不能通过 web 地址访问,你可以需要使用 DSN 私钥。要这样做的话,在配置时,把该项设置为 true.

debug

如果设置为 true, Raven.js 会在 console 中输出一些轻量的调试信息。

instrument

全局的开启或关闭 instrumentation. 可选值:

  1. true (默认)
  2. false - 关闭所有 insttumentation
  3. 一个独立 instrumentation 类型的字典来控制每一项的开启/关闭:
instrument: {
    'tryCatch': true, // Instruments timers and event targets
}

猜你喜欢

转载自www.cnblogs.com/liujinyu/p/10524343.html