前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Sentry 开发者贡献指南 - 什么是 Scope, 什么是 Hub?

Sentry 开发者贡献指南 - 什么是 Scope, 什么是 Hub?

作者头像
为少
发布2022-01-25 08:44:27
8280
发布2022-01-25 08:44:27
举报
文章被收录于专栏:黑客下午茶

目录

  • 什么是 Scope, 什么是 Hub?
  • Scope 和 Hub 的工作原理
  • 配置 Scope
  • 局部 Scope
  • 更多

当一个事件被捕获并发送到 Sentry 时,SDK 会将该事件数据与来自当前 scope 的额外信息合并。SDK 通常会在框架集成中为您自动管理 scope,您无需考虑它们。但是,您应该知道 scope 是什么以及如何利用它来获取优势。

什么是 Scope, 什么是 Hub?

您可以将 hub 视为我们的 SDK 用于将事件路由到 Sentry 的中心点。当您调用 init() 时,会创建一个 hub,并在其上创建一个 client 和一个空白 scope。然后该 hub 与当前线程相关联,并将在内部保存 scope 堆栈。

scope 将保存应与事件一起发送的有用信息。例如context(上下文)breadcrumbs(面包屑)存储在 scope 内。当一个 scopepush 时,它从父 scope 继承所有数据,当它 pop 时,所有修改都被还原

  • https://docs.sentry.io/platforms/javascript/enriching-events/context/
  • https://docs.sentry.io/platforms/javascript/enriching-events/breadcrumbs/

默认的 SDK 集成将智能地 pushpop scope。例如,Web 框架集成将围绕您的路由控制器创建和销毁 scope

Scope 和 Hub 的工作原理

当您开始使用 SDK 时,会自动为您创建一个开箱即用的 scopehub。除非您正在编写integration(集成)或想要创建或销毁 scope,否则您不太可能直接与 hub 交互。另一方面,scope 更面向用户。您可以随时调用 configure-scope 来修改存储在 scope 上的数据。例如,这用于修改上下文。

  • https://docs.sentry.io/platforms/javascript/enriching-events/context/

配置 Scope

使用 scope 时最有用的操作是 configure-scope 函数。它可用于重新配置当前 scope

您首先需要像往常一样导入 SDK

代码语言:javascript
复制
import * as Sentry from "@sentry/browser";

例如,您可以添加自定义 tag 或通知 Sentry 当前已通过身份验证的用户。

代码语言:javascript
复制
Sentry.configureScope(function(scope) {
  scope.setTag("my-tag", "my value");
  scope.setUser({
    id: 42,
    email: "john.doe@example.com",
  });
});

在注销用户时取消设置,也可以应用此配置:

代码语言:javascript
复制
Sentry.configureScope(scope => scope.setUser(null));

要了解哪些有用信息可以与 scope 关联,请参阅上下文文档。

  • https://docs.sentry.io/platforms/javascript/enriching-events/context/

局部 Scope

我们还支持一次性推送和配置 scope。这通常称为 with-scopepush-scope,如果您只想发送具有一个特定事件的数据,这也非常有用。在以下示例中,我们使用该函数将 leveltag 附加到仅一个特定错误

代码语言:javascript
复制
Sentry.withScope(function(scope) {
  scope.setTag("my-tag", "my value");
  scope.setLevel("warning");
  // will be tagged with my-tag="my value"
  Sentry.captureException(new Error("my error"));
});

// will not be tagged with my-tag
Sentry.captureException(new Error("my other error"));

虽然这个例子看起来与 configure-scope 很相似,但它有很大的不同,因为 configure-scope 实际上改变了当前的活动 scope,所有对 configure-scope 的后续调用都会保留这些变化。

另一方面,使用 with-scope 会创建当前 scope 的克隆,并将保持隔离,直到函数调用完成。因此,您可以在其中设置您想在其他地方的上下文信息,或者通过在 scope 上调用 clear 来完全不附加任何上下文信息,而“global(全局)” scope 保持不变。

请记住,with-scope 不会捕获在其回调函数中发生的任何异常,并且在那里发生的每个错误都将被静默忽略而不报告。

更多

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-01-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 黑客下午茶 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
  • 什么是 Scope, 什么是 Hub?
  • Scope 和 Hub 的工作原理
  • 配置 Scope
  • 局部 Scope
  • 更多
相关产品与服务
多因子身份认证
多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档