Sentry.getCurrentScope().setTransactionName(name) 没有任何效果

问题描述 投票:0回答:1

我正在使用 Sentry for node.js。 在这种情况下,我有一个 express 路线(比方说

/myRoute
),其中有两个主要分支,并且选择遍历的分支基于传入传入请求的内容。 这两个分支有很大不同,并且在 Sentry 中被视为两个不同的事务将会受益。

我尝试在代码分支后不久调用以下命令,以覆盖事务名称:

Sentry.getCurrentScope().setTransactionName('branchA');

Sentry.getCurrentScope().setTransactionName('branchB');

但是...我在数据中的任何地方都没有看到这两个事务名称...例如,在性能中我只看到

GET /myRoute/*
事务,而不是单独的
branchA
branchB
事务。

我做错了什么? 据我所知,我只是在做文档告诉我要做的事情

node.js profiling sentry
1个回答
0
投票

我遇到的问题是因为Sentry中使用的底层机制在SDK v8中进行了彻底修改,并且文档尚未更新以反映这一点。

文档已经现已更新,从中可以更清楚地看出,错误事务名称(应用于错误事件)和根跨度事务名称(根跨度的名称)之间存在区别在您的应用程序跨树中)。

就我而言,我实际上想设置根跨度事务名称,而我使用的方法实际上是更新错误事务名称。

无论如何,我现在正在使用此方法(从 v8.47.0 开始提供)在根跨度仍处于活动状态时更新名称:

const activeSpan = Sentry.getActiveSpan();
const rootSpan = activeSpan && Sentry.getRootSpan(activeSpan);
Sentry.updateSpanName(rootSpan, "my-new-name");

而且效果很好。

请参阅此问题,这是解决此问题的催化剂。

© www.soinside.com 2019 - 2024. All rights reserved.