Files
argo-cd/gitops-engine/pkg/utils/tracing/logging.go
Leonardo Luz Almeida bcc0243f1e prepare repo for migration to ArgoCD repo
Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
2025-09-23 10:05:42 -04:00

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
}