package middleware import ( "time" "github.com/ogen-go/ogen/middleware" "go.uber.org/zap" ) // Logging returns an ogen middleware that logs request duration. func Logging(log *zap.Logger) middleware.Middleware { return func(req middleware.Request, next func(req middleware.Request) (middleware.Response, error)) (middleware.Response, error) { lg := log.With(zap.String("operation", req.OperationID)) start := time.Now() resp, err := next(req) dur := time.Since(start) if err != nil { lg.Error("request failed", zap.Duration("duration", dur), zap.Error(err)) } else { lg.Info("request completed", zap.Duration("duration", dur)) } return resp, err } }