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 ...
随机推荐
- JAVA里List集合中的对象根据对象的某个属性值降序或者升序排序
需要使用JDK1.8及以上 package com.stream; import java.util.Comparator; import java.util.List; public class T ...
- Kafka Eagle分布式模式
1.概述 最近有同学留言,Kafka Eagle的分布式模式功能怎么使用,如何部署安装?今天笔者就为大家来详细介绍一下Kafka Eagle的分布式模式功能的安装和使用. 2.内容 首先,这里我们需要 ...
- 【LeetCode】768. Max Chunks To Make Sorted II 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目地址: https://leetcode.com/problems/max-chun ...
- 1434 区间LCM
1434 区间LCM 基准时间限制:1 秒 空间限制:131072 KB 一个整数序列S的LCM(最小公倍数)是指最小的正整数X使得它是序列S中所有元素的倍数,那么LCM(S)=X. 例如,LCM(2 ...
- Revolving Digits(hdu4333)
Revolving Digits Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- 永中dcs实现浏览器上面的手绘效果
永中dcs是一款在线预览各种办公文件的网络产品,我们可以只用一个浏览器就可以实现对word,ppt和excel等文件的在线浏览,在其中有一个在线手绘功能很有特色,让我们来探一探它的实现原理吧. 第一, ...
- Improving Adversarial Robustness via Channel-Wise Activation Suppressing
目录 概 主要内容 代码 Bai Y., Zeng Y., Jiang Y., Xia S., Ma X., Wang Y. Improving adversarial robustness via ...
- TGAN
目录 概 主要内容 Saito M., Matsumoto E. & Saito S. Temporal Generative Adversarial Nets with Singular V ...
- 万能密码:‘or 1=1-- 实战SQL注入,秒破后台
主要是没有对登录密码的字符串进行参数化和过滤,所以导致网站可以直接用"万能密码"进行突破登录 仅供学习交流 这是某同学做的网站,今天无聊打开了,并帮他进行测试一下 看到这个后台,感 ...
- VUE的学习_从入门到放弃(一)
一.vue的功能及作用 工作方式如下 1.不用操作DOM 2.单页面应用web项目 简称:SPA 3.当下各种新框架都采用的类似Vue或者类似React的语法去作为主语法,微信小程序/MpVue... ...