mirror of
https://github.com/argoproj/argo-cd.git
synced 2026-03-23 00:38:47 +01:00
57 lines
1.1 KiB
Go
57 lines
1.1 KiB
Go
package tracing
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/go-logr/logr"
|
|
)
|
|
|
|
var (
|
|
_ Tracer = LoggingTracer{}
|
|
_ Span = loggingSpan{}
|
|
)
|
|
|
|
type LoggingTracer struct {
|
|
logger logr.Logger
|
|
}
|
|
|
|
func NewLoggingTracer(logger logr.Logger) *LoggingTracer {
|
|
return &LoggingTracer{
|
|
logger: logger,
|
|
}
|
|
}
|
|
|
|
func (l LoggingTracer) StartSpan(operationName string) Span {
|
|
return loggingSpan{
|
|
logger: l.logger,
|
|
operationName: operationName,
|
|
baggage: make(map[string]any),
|
|
start: time.Now(),
|
|
}
|
|
}
|
|
|
|
type loggingSpan struct {
|
|
logger logr.Logger
|
|
operationName string
|
|
baggage map[string]any
|
|
start time.Time
|
|
}
|
|
|
|
func (s loggingSpan) Finish() {
|
|
s.logger.WithValues(baggageToVals(s.baggage)...).
|
|
WithValues("operation_name", s.operationName, "time_ms", time.Since(s.start).Seconds()*1e3).
|
|
Info("Trace")
|
|
}
|
|
|
|
func (s loggingSpan) SetBaggageItem(key string, value any) {
|
|
s.baggage[key] = value
|
|
}
|
|
|
|
func baggageToVals(baggage map[string]any) []any {
|
|
result := make([]any, 0, len(baggage)*2)
|
|
for k, v := range baggage {
|
|
result = append(result, k, v)
|
|
}
|
|
return result
|
|
}
|