一起来刷 Sentry For Go 官方文档之 Enriching Events(二)

简介: 一起来刷 Sentry For Go 官方文档之 Enriching Events(二)

用户反馈



当用户遇到错误时,Sentry 可以收集其他反馈。当您通常可以呈现简单的错误页面(经典的 500.html)时,这种类型的反馈很有用。


要收集反馈,请使用可嵌入的 JavaScript 小部件,该小部件将请求并收集用户的姓名,电子邮件地址以及发生的情况的描述。提供反馈后,Sentry 会将反馈与原始事件配对,从而使您对问题有更多见解。


下面的屏幕截图提供了“用户反馈”小部件的示例,尽管您的个性化可能因您的自定义而有所不同:


微信图片_20220610201917.png


收集反馈


要集成小部件,您需要运行 2.1 版或更高版本的 JavaScript SDK。该小部件将使用您的公共 DSN 进行身份验证,然后传入在您的后端生成的事件 ID。

如果您希望使用窗口小部件的替代产品,或者没有 JavaScript 前端,则可以使用用户反馈API。


确保您有可用的 JavaScript SDK:


<script
  src="https://browser.sentry-cdn.com/5.27.2/bundle.min.js"
  integrity="sha384-+69fdGw+g5z0JJXjw46U9Ls/d9Y4Zi6KUlCcub+qIWsUoIlyimCujtv+EnTTHPTD"
  crossorigin="anonymous"
></script>


然后,您需要调用 showReportDialog 并传递生成的事件 ID。从所有对 CaptureEventCaptureException 的调用都返回此事件 ID。还有一个名为 LastEventId 的函数,该函数返回最近发送的事件的 ID。


<script>
  Sentry.init({ dsn: "https://examplePublicKey@o0.ingest.sentry.io/0" });
  Sentry.showReportDialog({
    eventId: "{{ event_id }}",
  });
</script>


自定义小部件


您可以根据组织的需要自定义窗口小部件,尤其是为了本地化目的。所有选项都可以通过 showReportDialog 调用传递。


Sentry 的自动语言检测(例如 lang=de)的覆盖


Param Default
eventId 手动设置事件的ID。
dsn 手动设置要报告的dsn。
user 手动设置用户数据[上面列出了键的对象]。
user.email 用户的电子邮件地址。
user.name 用户的名称。
lang [automatic] – 覆盖 Sentry 的语言代码
title 看来我们有问题了。
subtitle 我们的团队已收到通知。
subtitle2 如果您想提供帮助,请告诉我们下面发生的情况。– 在小屏幕分辨率下不可见
labelName 名称
labelEmail 邮箱
labelComments 发生了什么?
labelClose 关闭
labelSubmit 提交
errorGeneric 提交报告时发生未知错误。请再试一次。
errorFormEntry 一些字段无效。请改正错误,再试一次。
successMessage 您的反馈已发送。谢谢!
onLoad n/a

作用域与 Hub



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


什么是 Scope,什么是 Hub


你可以把 hub 看作中心点,我们的 SDK 使用它来将事件路由到 Sentry。当您调用 init() 时,将创建一个 hub,并在其上创建一个 client 和一个 blank scope。然后,该中心与当前线程相关联,并将在内部持有一个作用域堆栈。


范围将包含应与事件一起发送的有用信息。例如,上下文或面包屑存储在 scope 上。当推入作用域时,它将继承父作用域的所有数据, 并且当其弹出时,所有修改都将还原。

默认的 SDK 集成将智能地推送和弹出作用域。例如,Web 框架集成将在您的路由或控制器周围创建和销毁作用域。


Scope 和 Hub 如何工作


在开始使用 SDK 时,将自动为您创建开箱即用的 Scope 和 Hub。除非您正在编写集成或希望创建或销毁作用域,否则您不太可能与 Hub 直接交互。另一方面,范围更面向用户。您可以在任何时候调用 configure-scope 来修改存储在该 Scope 上的数据。例如,它用于修改上下文。


在内部调用全局函数(如 capture_event )时,Sentry 会发现当前 Hub 并要求它捕获一个事件。然后,hub 将在内部将事件与最顶层 Scope 的数据合并。


配置 Scope


在使用作用域时,最有用的操作是 configure-scope 函数。它可用于重新配置当前范围。例如,这可以用来添加自定义标记或通知 sentry 关于当前经过身份验证的用户。


sentry.ConfigureScope(func(scope *sentry.Scope) {
  scope.SetTag("my-tag", "my value")
  scope.SetUser(sentry.User{
    ID: "42",
    Email: "john.doe@example.com",
  })
})


这也可以应用在注销时取消设置用户:

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


局部作用域


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


sentry.WithScope(func(scope *sentry.Scope) {
  scope.SetTag("my-tag", "my value");
  scope.SetLevel(sentry.LevelWarning);
  // will be tagged with my-tag="my value"
  sentry.CaptureException(errors.New("my error"))
})
// will not be tagged with my-tag
sentry.CaptureException(errors.New("my error"))


虽然这个示例看起来与 configure-scope 类似,但它有很大的不同, 因为 configure-scope 实际上更改了当前活动的作用域, 所以对 configure-scope 的所有后续调用将保留这些更改。


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

相关文章
|
NoSQL API Go
go-mongox:简单高效,让文档操作和 bson 数据构造更流畅
`go-mongox` 基于 **泛型** 对 `MongoDB` 官方框架进行了二次封装,它通过使用链式调用的方式,让我们能够丝滑地操作文档。同时,其还提供了多种类型的 `bson` 构造器,帮助我们高效的构建 `bson` 数据。
121 0
|
Cloud Native 架构师 Java
谷歌架构师分享gRPC与云原生应用开发Go和Java为例文档
随着微服务和云原生相关技术的发展,应用程序的架构模式已从传统的单体架构或分层架构转向了分布式的计算架构。尽管分布式架构本身有一定的开发成本和运维成本,但它所带来的收益是显而易见的。
|
消息中间件 缓存 监控
Sentry 开发人员文档(中文手册,二次开发指南)
Sentry 开发人员文档(中文手册,二次开发指南)
2926 0
Sentry 开发人员文档(中文手册,二次开发指南)
|
3月前
|
JSON Go 数据格式
Go - 使用工具生成易读的 Protocol 文档
Go - 使用工具生成易读的 Protocol 文档
23 1
|
程序员 Go API
Go语言微服务框架 - 10.接口文档-openapiv2的在线文档方案
随着项目的迭代,一个服务会开放出越来越多的接口供第三方调用。 虽然`protobuf`已经是通用性很广的IDL文件了,但对于未接触过这块的程序员来说,还是有很大的学习成本。在综合可读性和维护性之后,我个人比较倾向于使用oepnapiv2的方案,提供在线接口文档。
177 0
|
6月前
|
JSON 中间件 Go
Go 框架 iris 文档(二)
Go 框架 iris 文档(二)
140 0
|
6月前
|
XML JSON 中间件
Go 框架 iris 文档(一)
Go 框架 iris 文档(一)
309 0
|
JSON Go 数据格式
Go语言注释和文档生成的最佳实践 就在这里
Go语言注释和文档生成的最佳实践 就在这里
338 0
|
XML 存储 边缘计算
Excelize 发布 2.7.1 版本,Go 语言 Excel 文档基础库
Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,2023年4月10日,社区正式发布了 2.7.1 版本,该版本包含了多项新增功能、错误修复和兼容性提升优化。
150 3
Excelize 发布 2.7.1 版本,Go 语言 Excel 文档基础库
|
边缘计算 BI Go
Go --- 操作Excel文档
Go --- 操作Excel文档
Go --- 操作Excel文档
下一篇
无影云桌面