准备测试
使用 Node.js 18 或更高版本的应用,以及一个你有读取权限的 LogBrew 项目。如果你之前没有发送过遥测数据,先从快速入门开始。不要让此测试混入客户活动。 在应用目录中安装以下包:LOGBREW_SERVER_API_KEY 中,不要纳入源码管理。切勿把服务端密钥放进浏览器打包文件。账号访问令牌用于读取结果,不用于配置 SDK。
确定一个事件代表什么
从一个产品问题出发。例如:用户打开结账页面后,会提交吗?为每个事件指定一个固定名称、一个明确的触发条件,以及应用中唯一一个记录它的位置。
在不同版本和语言之间保持事件名称不变。不要用电子邮件地址、订单号、URL 或用户输入的文本拼接名称。
自定义属性只使用一小组经过批准的值。例如,
checkout_mode 可以是 guest 或 signed_in。不要为每个值新增一个事件名称。不要发送表单内容。
每个业务操作只在一个位置记录。如果浏览器和服务器都记录同一个操作,总数会翻倍。
使用正确的活动类型
createProductActionAttributes 会在事件元数据中设置 analyticsSchemaVersion: 1 和 analyticsKind: "interaction"。它的路由模板或屏幕名称决定 analyticsSurface。使用路由模板(例如 /orders/:id),而不是具体的 URL。
事件名称不决定类型。名为 page_view 的互动仍然是互动。日志、问题和 Span(一次计时操作)都不是产品事件。其他运行时请参阅 SDK 接入。
为每个事件设置用户和会话
- 对于已登录用户,将
context.subject设为稳定的 ID,并设置kind: "user"。 - 对于匿名访客,使用另一个 ID,并设置
kind: "anonymous"。 - 把应用的会话 ID 放进
context.session.id。在整个会话中重复使用它。
在本地运行示例
将此示例保存为product-events.mjs。它记录 5 个测试操作,涵盖匿名访问、登录和 2 个用户。客户端只保存共享的服务和部署上下文。此测试关闭了自动投递。
--send。此命令不会发送任何请求:
previewJson()。
处理登录和退出登录
- 登录前,每个事件都发送当前的匿名主体。
- 登录后,发送该用户的稳定 ID,类型为
user。 - 退出登录时,停止使用该用户的上下文。按照你的隐私政策创建新的匿名主体。
- 切换账号时,使用新用户的 ID。
发送一次并查看结果
在进程环境中设置测试项目的服务端密钥。只运行一次此命令:- 打开分析。
- 在项目下选择测试项目。
- 在时间范围下选择 24 小时。
- 在热门事件下找到这 3 个事件名称,在热门页面下找到
/checkout。
- 5 次互动,全部带有会话上下文,页面均为
/checkout。 - 3 个事件来自用户,2 个来自匿名主体。
- 2 个用户、2 个匿名主体和 4 个会话。
在应用中测试事件
把采集调用移到应用的处理函数中。保持每个事件的含义、类型和身份规则不变。先用虚构的测试账号验证。
本地预览检验的是采集,被接受的批次检验的是投递。两者都不能证明采集调用在应用中的正确位置运行。
