我在操作系统/规范/跟踪/api里找到了这个
如果该语言支持隐式传播的
Context(请参见这里),则该API还应提供以下功能:
Span。Span插入上下文。但我没有找到在java或go中获得当前活动span的方法。是否有任何语言支持此功能?
任何帮助都将不胜感激!
发布于 2021-03-29 22:31:16
是的,.NET支持它:global::OpenTelemetry.Trace.Tracer.CurrentSpan。这是可行的,因为在任何给定的执行流中一次只能有一个“活动”范围。要明确的是:可以有多个跨并发活动,只是不在同一个执行流程中;执行流可以分叉,但每个分叉一次只有一个活动跨度。
而且,.NET的活动API中已经包含了与OpenTelemetry API相当的内容。
您还可以通过访问System.Diagnostics.ActivityContext获得当前的Activity.Current.Context。
OpenTelemetry API的.NET参考实现建议您直接使用.NET框架的内置活动API。但是,它还提供了包装Activity的OpenTelemetry shims。
例如,您可以隐式地将OpenTelemetry.Trace.SpanContext转换为System.Diagnostics.ActivityContext。你可以用new OpenTelemetry.Trace.SpanContext(activityContext)把它转换回来。
但是,我没有看到从TelemetrySpan中获取SpanContext的方法。所以global::OpenTelemetry.Trace.Tracer.CurrentSpan可能是你最好的选择。
https://stackoverflow.com/questions/64464913
复制相似问题