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

当一个事件被捕获并发送到 Sentry 时,SDK 会将该事件数据与来自当前 scope 的额外信息合并。SDK 通常会在框架集成中为您自动管理 scope,您无需考虑它们。但是,您应该知道 scope 是什么以及如何利用它来获取优势。
什么是 Scope, 什么是 Hub?
您可以将 hub 视为我们的 SDK 用于将事件路由到 Sentry 的中心点。当您调用 init() 时,会创建一个 hub,并在其上创建一个 client 和一个空白 scope。然后该 hub 与当前线程相关联,并将在内部保存 scope 堆栈。
scope 将保存应与事件一起发送的有用信息。例如context(上下文)或breadcrumbs(面包屑)存储在 scope 内。当一个 scope 被 push 时,它从父 scope 继承所有数据,当它 pop 时,所有修改都被还原。
- https://docs.sentry.io/platforms/javascript/enriching-events/context/
- https://docs.sentry.io/platforms/javascript/enriching-events/breadcrumbs/
默认的 SDK 集成将智能地 push 和 pop scope。例如,Web 框架集成将围绕您的路由或控制器创建和销毁 scope。
Scope 和 Hub 的工作原理
当您开始使用 SDK 时,会自动为您创建一个开箱即用的 scope 和 hub。除非您正在编写integration(集成)或想要创建或销毁 scope,否则您不太可能直接与 hub 交互。另一方面,scope 更面向用户。您可以随时调用 configure-scope 来修改存储在 scope 上的数据。例如,这用于修改上下文。
配置 Scope
使用 scope 时最有用的操作是 configure-scope 函数。它可用于重新配置当前 scope。
您首先需要像往常一样导入 SDK:
import * as Sentry from "@sentry/browser";
例如,您可以添加自定义 tag 或通知 Sentry 当前已通过身份验证的用户。
Sentry.configureScope(function(scope) {
scope.setTag("my-tag", "my value");
scope.setUser({
id: 42,
email: "john.doe@example.com",
});
});
在注销用户时取消设置,也可以应用此配置:
Sentry.configureScope(scope => scope.setUser(null));
要了解哪些有用信息可以与 scope 关联,请参阅上下文文档。
局部 Scope
我们还支持一次性推送和配置 scope。这通常称为 with-scope 或 push-scope,如果您只想发送具有一个特定事件的数据,这也非常有用。 在以下示例中,我们使用该函数将 level 和 tag 附加到仅一个特定错误:
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 不会捕获在其回调函数中发生的任何异常,并且在那里发生的每个错误都将被静默忽略而不报告。
更多
Sentry 开发者贡献指南 - 什么是 Scope, 什么是 Hub?的更多相关文章
- Sentry 开发者贡献指南 - SDK 开发(性能监控)
内容整理于官方开发文档 系列 Docker Compose 部署与故障排除详解 K8S + Helm 一键微服务部署 Sentry 开发者贡献指南 - 前端(ReactJS生态) Sentry 开发者 ...
- Sentry 开发者贡献指南 - SDK 开发(性能监控:Sentry SDK API 演进)
内容整理自官方开发文档 本文档的目标是将 Sentry SDK 中性能监控功能的演变置于上下文中. 我们首先总结了如何将性能监控添加到 Sentry 和 SDK, 然后我们讨论 identified ...
- Sentry 开发者贡献指南 - Feature Flag
功能 flag 在 Sentry 的代码库中声明. 对于自托管用户,这些标志然后通过 sentry.conf.py 进行配置. 对于 Sentry 的 SaaS 部署,Flagr 用于在生产中配置标志 ...
- Sentry 开发者贡献指南 - 后端服务(Python/Go/Rust/NodeJS)
内容整理自官方开发文档 系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Map ...
- Sentry 开发者贡献指南 - 前端 React Hooks 与虫洞状态管理模式
系列 Sentry 开发者贡献指南 - 前端(ReactJS生态) Sentry 开发者贡献指南 - 后端服务(Python/Go/Rust/NodeJS) 什么是虫洞状态管理模式? 您可以逃脱的最小 ...
- Sentry 开发者贡献指南 - SDK 开发(事件负载)
内容整理自官方开发文档 系列 Docker Compose 部署与故障排除详解 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentr ...
- Sentry 开发者贡献指南 - Django Rest Framework(Serializers)
Serializer 用于获取复杂的 python 模型并将它们转换为 json.序列化程序还可用于在验证传入数据后将 json 反序列化回 Python 模型. 在 Sentry,我们有两种不同类型 ...
- Sentry 开发者贡献指南 - 配置 PyCharm
概述 如果您使用 PyCharm 进行开发,则需要配置一些内容才能运行和调试. 本文档描述了一些对 sentry 开发有用的配置 配置 Python 解释器:(确保它是 venv 解释器)例如 ~/v ...
- Sentry 开发者贡献指南 - 数据库迁移
Django 迁移是我们处理 Sentry 中数据库更改的方式. Django 迁移官方文档:https://docs.djangoproject.com/en/2.2/topics/migratio ...
随机推荐
- Windows的Nginx服务可视化界面安装
先安装Nginx服务 启动 Windows安装Nginx服务 参考:https://www.cnblogs.com/pxblog/p/14871932.html 下载软件 https://github ...
- 【LeetCode】62. Unique Paths 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目地址:https://leetcode.com/problems/unique-pa ...
- 【LeetCode】137. Single Number II 解题报告(Python)
[LeetCode]137. Single Number II 解题报告(Python) 标签: LeetCode 题目地址:https://leetcode.com/problems/single- ...
- 1340 - Story of Tomisu Ghost
1340 - Story of Tomisu Ghost PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: ...
- RMQ(ST(Sparse Table))(转载)
1. 概述 RMQ(Range Minimum/Maximum Query),即区间最值查询,是指这样一个问题:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j<=n),返回数列A ...
- Order Statistic
目录 The Order Statistic 引理1 的一些基本性质 顺序统计量的分布 顺序统计量的条件分布 特殊分布的特殊性质 Order Statistic The Order Statistic ...
- ios离线打包报错Showing Recent Messages :-1: HBuilder has conflicting provisioning settings. HBuilder is automatically signed for development, but a conflicting code signing identity iPhone Distribution has
1.解决方案找到项目工程文件右击->显示包内容->双击project.pbxproj->搜索distribution改写成Developer
- Java初学者作业——编写Java程序,输入一个学生的5门课程的成绩,求其平均分。
返回本章节 返回作业目录 需求说明: 编写Java程序,输入一个学生的5门课程的成绩,求其平均分.计算平均成绩,需要将每一门课程的成绩逐步累加到总成绩中,使用 for 循环实现,然后求出平均分. 实现 ...
- 【HTML基础习题】HTML5+CSS3做问卷星登录页面
源代码下载地址:https://download.csdn.net/download/weixin_44893902/12839539 码云仓库地址: https://gitee.com/ynavc/ ...
- localstorage的浏览器支持情况
localStorage的兼容性不错,就国内的情况,已经基本没有问题了.localStorage的原理很简单,浏览器为每个域名划出一块本地存储空间,用户网页可以通过localStorage命名空间进行 ...