You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
28 lines
765 B
28 lines
765 B
package sqlx |
|
|
|
import ( |
|
"context" |
|
"database/sql" |
|
"git.diulo.com/mogfee/kit/trace" |
|
"go.opentelemetry.io/otel/attribute" |
|
"go.opentelemetry.io/otel/codes" |
|
oteltrace "go.opentelemetry.io/otel/trace" |
|
) |
|
|
|
var sqlAttributeKey = attribute.Key("sql.method") |
|
|
|
func startSpan(ctx context.Context, method string) (context.Context, oteltrace.Span) { |
|
tracer := trace.TracerFromContext(ctx) |
|
start, span := tracer.Start(ctx, spanName, oteltrace.WithSpanKind(oteltrace.SpanKindClient)) |
|
span.SetAttributes(sqlAttributeKey.String(method)) |
|
return start, span |
|
} |
|
func endSpan(span oteltrace.Span, err error) { |
|
defer span.End() |
|
if err == nil || err == sql.ErrNoRows { |
|
span.SetStatus(codes.Ok, "") |
|
return |
|
} |
|
span.SetStatus(codes.Error, err.Error()) |
|
span.RecordError(err) |
|
}
|
|
|