1 Star 0 Fork 0

menuiis / gkit

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
middle.go 1.33 KB
一键复制 编辑 原始数据 按行查看 历史
menuis 提交于 2024-04-22 10:18 . init
package trace
import (
"context"
"gitee.com/menciis/gkit/middleware"
"gitee.com/menciis/gkit/options"
"go.opentelemetry.io/otel/trace"
)
// WithServer returns a new server middleware for OpenTelemetry.
func WithServer(opts ...options.Option) middleware.MiddleWare {
tracer := NewTracer(trace.SpanKindServer, opts...)
return func(handler middleware.Endpoint) middleware.Endpoint {
return func(ctx context.Context, req interface{}) (reply interface{}, err error) {
if tr, ok := FromServerTransportContext(ctx); ok {
var span trace.Span
ctx, span = tracer.Start(ctx, tr.Operation(), tr.RequestHeader())
setServerSpan(ctx, span, req)
defer func() { tracer.End(ctx, span, reply, err) }()
}
return handler(ctx, req)
}
}
}
// WithClient returns a new client middleware for OpenTelemetry.
func WithClient(opts ...options.Option) middleware.MiddleWare {
tracer := NewTracer(trace.SpanKindClient, opts...)
return func(handler middleware.Endpoint) middleware.Endpoint {
return func(ctx context.Context, req interface{}) (reply interface{}, err error) {
if tr, ok := FromClientTransportContext(ctx); ok {
var span trace.Span
ctx, span = tracer.Start(ctx, tr.Operation(), tr.RequestHeader())
setClientSpan(ctx, span, req)
defer func() { tracer.End(ctx, span, reply, err) }()
}
return handler(ctx, req)
}
}
}
Go
1
https://gitee.com/menciis/gkit.git
git@gitee.com:menciis/gkit.git
menciis
gkit
gkit
4f74120a101e

搜索帮助