添加 Context
自定义上下文允许您将任意数据附加到事件。您无法搜索这些,但可以在问题页面上查看它们:
如果需要能够搜索自定义数据,则需要使用标签。
要配置附加上下文:
sentry.ConfigureScope(func(scope *sentry.Scope) { scope.SetExtra("character.name", "Mighty Fighter") })
注意,上下文的外部值必须是一个 dictionary/map/object,而内部值可以是任意的。
发送上下文时,请注意最大有效负载大小,尤其是如果您希望将整个应用程序状态作为额外数据发送时。Sentry不建议使用此方法,因为应用程序状态可能非常大,并且很容易超过 Sentry 在单个事件有效负载上的最大200kB。发生这种情况时,您会收到HTTP Error 413 Payload Too Large
消息,作为服务器响应,或者(当您将 keepalive: true
设置为 fetch
参数时),该请求将永远处于待处理状态(例如,在 Google Chrome 中)。
Sentry 将尽力容纳您发送的数据,但 Sentry 会修剪较大的上下文有效负载或完全截断这些有效负载。
有关更多详细信息,请参阅有关SDK数据处理的开发人员文档。
Extra Data, Additional Data(额外数据)
如果遇到 “extra”(在代码中为 SetExtra
)或 “Additional Data”(在用户界面中)的任何用法,请在头脑上将其替换为上下文。大多数 SDK 不推荐使用 Extra,而是使用上下文。
识别用户
用户包含一些关键信息,这些信息构成了 Sentry 中的唯一身份。每个选项都是可选的,但必须存在一个选项才能使 Sentry SDK 捕获用户:
id
您的用户内部标识符。
username
用户名。通常用作比内部ID更好的标签。
email
用户名的替代(或添加)。Sentry 知道电子邮件地址,并且可以显示 Gravatars 之类的内容并解锁消息传递功能。
ip_address
用户的IP地址。如果用户未经身份验证,Sentry 将 IP 地址用作用户的唯一标识符。Sentry 将尝试从 HTTP 请求数据中提取此信息(如果有)。
识别用户:
sentry.ConfigureScope(func(scope *sentry.Scope) { scope.SetUser(sentry.User{Email: "jane.doe@example.com"}) })
可以将其他 key/value 对指定为元数据,Sentry SDK会将这些键/值对与用户一起存储。
自定义标签
标签是既可索引又可搜索的 key/value
字符串对。标签具有强大的 UI 功能,例如过滤器和标签分布图。标签还可以帮助您快速访问相关事件,并查看一组事件的标签分布。标签的常见用法包括主机名,平台版本和用户语言。
我们将自动为一个事件的所有标签建立索引,以及 Sentry 看到标签的频率和最后一次。我们还将跟踪不同标签的数量,并可以帮助您确定各种问题的热点。
定义标签很容易,并将它们绑定到当前范围,确保范围内的所有未来事件都包含相同的标签:
sentry.ConfigureScope(func(scope *sentry.Scope) { scope.SetTag("page.locale", "de-at"); })
某些标签由 Sentry 自动设置。强烈建议您不要覆盖这些标签,而应使用自己的名称命名。
一旦开始发送标记的数据,您将在Sentry Web UI中看到它:“项目”页面侧栏中的过滤器,在事件内进行汇总以及在聚合事件的“标签”页面上。
面包屑
Sentry 使用面包屑创建事件发生之前的事件线索。这些事件与传统日志非常相似,但是可以记录更丰富的结构化数据。
此页面概述了手动面包屑记录和自定义。了解有关“Issue Details”页面上显示的更多信息, 以及如何过滤面包屑以快速解决问题。
:::tip 了解 SDK 使用情况
想要修改面包屑界面的开发人员可以使用专用于面包屑界面的开发人员文档详细了解此内容。:::
手动面包屑
每当发生有趣的事情时,您都可以手动添加面包屑。例如,如果用户通过身份验证或发生其他状态更改,则可以手动记录面包屑。
sentry.AddBreadcrumb(&sentry.Breadcrumb{ Category: "auth", Message: "Authenticated user " + user.email, Level: sentry.LevelInfo, });
自动面包屑
SDK 及其相关的集成将自动记录许多类型的面包屑。例如,浏览器 JavaScript SDK 将自动记录所有位置更改。
定制面包屑
SDK 允许您通过 before_breadcrumb
hook 自定义面包屑。此 hook 传递了已经组装好的面包屑,并且在某些SDK中传递了可选提示。该函数可以修改面包屑,或通过返回 null
来决定完全放弃它:
sentry.Init(sentry.ClientOptions{ BeforeBreadcrumb: func(breadcrumb *sentry.Breadcrumb, hint *sentry.BreadcrumbHint) *sentry.Breadcrumb { if breadcrumb.Category == "auth" { return nil } return breadcrumb }, })