新聞中心
什么是 Scope, 什么是 Hub?
您可以將 hub 視為我們的 SDK 用于將事件路由到 Sentry 的中心點。當您調(diào)用 init() 時,會創(chuàng)建一個 hub,并在其上創(chuàng)建一個 client 和一個空白 scope。然后該 hub 與當前線程相關聯(lián),并將在內(nèi)部保存 scope 堆棧。

創(chuàng)新互聯(lián)建站長期為上1000+客戶提供的網(wǎng)站建設服務,團隊從業(yè)經(jīng)驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為閩清企業(yè)提供專業(yè)的成都網(wǎng)站設計、成都網(wǎng)站建設,閩清網(wǎng)站改版等技術服務。擁有10多年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
scope 將保存應與事件一起發(fā)送的有用信息。例如context(上下文)或breadcrumbs(面包屑)存儲在 scope 內(nèi)。當一個 scope 被 push 時,它從父 scope 繼承所有數(shù)據(jù),當它 pop 時,所有修改都被還原。
https://docs.sentry.io/platforms/javascript/enriching-events/context/
https://docs.sentry.io/platforms/javascript/enriching-events/breadcrumbs/
默認的 SDK 集成將智能地 push 和 pop scope。例如,Web 框架集成將圍繞您的路由或控制器創(chuàng)建和銷毀 scope。
Scope 和 Hub 的工作原理
當您開始使用 SDK 時,會自動為您創(chuàng)建一個開箱即用的 scope 和 hub。除非您正在編寫integration(集成)或想要創(chuàng)建或銷毀 scope,否則您不太可能直接與 hub 交互。另一方面,scope 更面向用戶。您可以隨時調(diào)用 configure-scope 來修改存儲在 scope 上的數(shù)據(jù)。例如,這用于修改上下文。
https://docs.sentry.io/platforms/javascript/enriching-events/context/
配置 Scope
使用 scope 時最有用的操作是 configure-scope 函數(shù)。它可用于重新配置當前 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 關聯(lián),請參閱上下文文檔。
https://docs.sentry.io/platforms/javascript/enriching-events/context/
局部 Scope
我們還支持一次性推送和配置 scope。這通常稱為 with-scope 或 push-scope,如果您只想發(fā)送具有一個特定事件的數(shù)據(jù),這也非常有用。在以下示例中,我們使用該函數(shù)將 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 的后續(xù)調(diào)用都會保留這些變化。
另一方面,使用 with-scope 會創(chuàng)建當前 scope 的克隆,并將保持隔離,直到函數(shù)調(diào)用完成。因此,您可以在其中設置您不想在其他地方的上下文信息,或者通過在 scope 上調(diào)用 clear 來完全不附加任何上下文信息,而“global(全局)” scope 保持不變。
請記住,with-scope 不會捕獲在其回調(diào)函數(shù)中發(fā)生的任何異常,并且在那里發(fā)生的每個錯誤都將被靜默忽略而不報告。
文章題目:Sentry開發(fā)者貢獻指南-什么是Scope,什么是Hub?
標題URL:http://www.5511xx.com/article/cdcgjdo.html


咨詢
建站咨詢
