Files
podinfo/pkg/api/http/logging.go
Hans van den Bogert 7cc399463c feat(logging): add trace_id to debug log line
... if exists in context
2025-03-10 21:48:25 +01:00

42 lines
879 B
Go

package http
import (
"net/http"
"go.opentelemetry.io/otel/trace"
"go.uber.org/zap"
)
type LoggingMiddleware struct {
logger *zap.Logger
}
func NewLoggingMiddleware(logger *zap.Logger) *LoggingMiddleware {
return &LoggingMiddleware{
logger: logger,
}
}
func (m *LoggingMiddleware) Handler(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
fields := []zap.Field{
zap.String("proto", r.Proto),
zap.String("uri", r.RequestURI),
zap.String("method", r.Method),
zap.String("remote", r.RemoteAddr),
zap.String("user-agent", r.UserAgent()),
}
spanCtx := trace.SpanContextFromContext(r.Context())
if spanCtx.HasTraceID() {
fields = append(fields, zap.String("trace_id", spanCtx.TraceID().String()))
}
m.logger.Debug(
"request started",
fields...,
)
next.ServeHTTP(w, r)
})
}