diff --git a/api/handler/accounting.go b/api/handler/accounting.go index b40ef2eaf..87849099c 100644 --- a/api/handler/accounting.go +++ b/api/handler/accounting.go @@ -68,13 +68,13 @@ func (ah *AccountingHandler) QueryMeteringStatementByUserID(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) per, page, err := common.GetPerAndPageFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } scene, err := getSceneFromContext(ctx) if err != nil { - slog.Error("Bad request scene format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request scene format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -83,12 +83,12 @@ func (ah *AccountingHandler) QueryMeteringStatementByUserID(ctx *gin.Context) { startTime := ctx.Query("start_time") // format: '2024-06-12 08:27:22' endTime := ctx.Query("end_time") // format: '2024-06-12 17:17:22' if len(startTime) < 1 || len(endTime) < 1 || len(userUUID) < 1 { - slog.Error("Bad request format") + slog.ErrorContext(ctx.Request.Context(), "Bad request format") httpbase.BadRequest(ctx, "Bad request format") return } if !validateDateTimeFormat(startTime, "2006-01-02 15:04:05") || !validateDateTimeFormat(endTime, "2006-01-02 15:04:05") { - slog.Error("Bad request datetime format") + slog.ErrorContext(ctx.Request.Context(), "Bad request datetime format") httpbase.BadRequest(ctx, "Bad request datetime format") return } @@ -105,7 +105,7 @@ func (ah *AccountingHandler) QueryMeteringStatementByUserID(ctx *gin.Context) { data, err := ah.accounting.ListMeteringsByUserIDAndTime(ctx.Request.Context(), req) if err != nil { errTip := "fail to query meterings by user" - slog.Error(errTip, slog.Any("req", req), slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), errTip, slog.Any("req", req), slog.Any("error", err)) httpbase.ServerError(ctx, errors.New(errTip)) return } diff --git a/api/handler/broadcast.go b/api/handler/broadcast.go index 3b7b9c93f..0e131563b 100644 --- a/api/handler/broadcast.go +++ b/api/handler/broadcast.go @@ -35,7 +35,7 @@ func (h *BroadcastHandler) Index(ctx *gin.Context) { broadcasts, err := h.ec.AllBroadcasts(ctx.Request.Context()) if err != nil { - slog.Error("failed to find broadcasts", "error", err) + slog.ErrorContext(ctx.Request.Context(), "failed to find broadcasts", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -62,7 +62,7 @@ func (h *BroadcastHandler) Create(ctx *gin.Context) { } if err := h.ec.NewBroadcast(ctx.Request.Context(), broadcast); err != nil { - slog.Error("Failed to create events", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to create events", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -88,20 +88,20 @@ func (h *BroadcastHandler) Update(ctx *gin.Context) { activeBroadcast, err := h.ec.ActiveBroadcast(ctx.Request.Context()) if err != nil { - slog.Error("Faild to retrieve active broadcasts", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Faild to retrieve active broadcasts", "error", err) httpbase.ServerError(ctx, err) return } id, err := strconv.ParseInt(ctx.Param("id"), 10, 64) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } if broadcast.Status == "active" && activeBroadcast != nil && activeBroadcast.ID != id { - slog.Error("Bad request format", "error", "Active Broadcast exits") + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", "Active Broadcast exits") httpbase.BadRequest(ctx, "Active Broadcast exits") return } @@ -111,7 +111,7 @@ func (h *BroadcastHandler) Update(ctx *gin.Context) { _, err = h.ec.UpdateBroadcast(ctx.Request.Context(), broadcast) if err != nil { - slog.Error("Failed to update Broadcast", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to update Broadcast", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -130,13 +130,13 @@ func (h *BroadcastHandler) Update(ctx *gin.Context) { func (h *BroadcastHandler) Show(ctx *gin.Context) { id, err := strconv.ParseInt(ctx.Param("id"), 10, 64) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } broadcast, err := h.ec.GetBroadcast(ctx.Request.Context(), id) if err != nil { - slog.Error("Failed to find Broadcast", slog.Any("error", err), "id", id) + slog.ErrorContext(ctx.Request.Context(), "Failed to find Broadcast", slog.Any("error", err), "id", id) httpbase.ServerError(ctx, err) return } @@ -155,7 +155,7 @@ func (h *BroadcastHandler) Show(ctx *gin.Context) { func (h *BroadcastHandler) Active(ctx *gin.Context) { broadcast, err := h.ec.ActiveBroadcast(ctx.Request.Context()) if err != nil { - slog.Error("Failed to find Broadcast", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to find Broadcast", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } diff --git a/api/handler/callback/git_callback.go b/api/handler/callback/git_callback.go index 86d78cae9..9e7cb9763 100644 --- a/api/handler/callback/git_callback.go +++ b/api/handler/callback/git_callback.go @@ -35,7 +35,7 @@ func (h *GitCallbackHandler) Handle(c *gin.Context) { case "push": h.handlePush(c) default: - slog.Error("Unknown git callback event", "event", event) + slog.ErrorContext(c.Request.Context(), "Unknown git callback event", "event", event) httpbase.BadRequest(c, "unknown git callback event:"+event) } @@ -44,7 +44,7 @@ func (h *GitCallbackHandler) Handle(c *gin.Context) { func (h *GitCallbackHandler) handlePush(c *gin.Context) { var req types.GiteaCallbackPushReq if err := c.ShouldBindJSON(&req); err != nil { - slog.Error("[git_callback] Bad git callback request format", slog.Any("error", err)) + slog.ErrorContext(c.Request.Context(), "[git_callback] Bad git callback request format", slog.Any("error", err)) c.JSON(http.StatusBadRequest, gin.H{"message": err.Error()}) return } @@ -58,7 +58,7 @@ func (h *GitCallbackHandler) handlePush(c *gin.Context) { c, workflowOptions, workflow.HandlePushWorkflow, &req, ) if err != nil { - slog.Error("[git_callback] failed to handle git push callback", slog.Any("error", err), slog.Any("repo_path", req.Repository.FullName)) + slog.ErrorContext(c.Request.Context(), "[git_callback] failed to handle git push callback", slog.Any("error", err), slog.Any("repo_path", req.Repository.FullName)) httpbase.ServerError(c, err) return } diff --git a/api/handler/cluster.go b/api/handler/cluster.go index a7973f4b8..e510ec503 100644 --- a/api/handler/cluster.go +++ b/api/handler/cluster.go @@ -50,7 +50,7 @@ const ( func (h *ClusterHandler) Index(ctx *gin.Context) { clusters, err := h.c.Index(ctx.Request.Context()) if err != nil { - slog.Error("Failed to get cluster list", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get cluster list", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -72,7 +72,7 @@ func (h *ClusterHandler) GetClusterById(ctx *gin.Context) { id := ctx.Param("id") cluster, err := h.c.GetClusterWithResourceByID(ctx.Request.Context(), id) if err != nil { - slog.Error("Failed to get cluster", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get cluster", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -93,7 +93,7 @@ func (h *ClusterHandler) GetClusterById(ctx *gin.Context) { func (h *ClusterHandler) GetClusterUsage(ctx *gin.Context) { usages, err := h.c.GetClusterUsages(ctx.Request.Context()) if err != nil { - slog.Error("Failed to get cluster usage", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get cluster usage", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -118,7 +118,7 @@ func (h *ClusterHandler) GetClusterUsage(ctx *gin.Context) { func (h *ClusterHandler) GetDeploys(ctx *gin.Context) { per, page, err := common.GetPerAndPageFromContext(ctx) if err != nil { - slog.Error("Bad request format of page and per", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Bad request format of page and per", slog.Any("error", err)) httpbase.BadRequestWithExt(ctx, err) return } @@ -138,7 +138,7 @@ func (h *ClusterHandler) GetDeploys(ctx *gin.Context) { req.Query = ctx.Query("search") deploys, total, err := h.c.GetDeploys(ctx.Request.Context(), req) if err != nil { - slog.Error("Failed to get cluster deploys", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get cluster deploys", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -175,7 +175,7 @@ func (h *ClusterHandler) GetDeploysReport(ctx *gin.Context) { } req.Query = ctx.Query("search") if err := bindDeployDateRange(ctx, &req); err != nil { - slog.Error("Invalid date range for deploy report", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Invalid date range for deploy report", slog.Any("error", err)) httpbase.BadRequest(ctx, err.Error()) return } @@ -208,7 +208,7 @@ func (h *ClusterHandler) GetDeploysReport(ctx *gin.Context) { for { deploys, total, err := h.c.GetDeploys(ctx.Request.Context(), req) if err != nil { - slog.Error("Failed to get cluster deploys", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get cluster deploys", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -230,7 +230,7 @@ func (h *ClusterHandler) GetDeploysReport(ctx *gin.Context) { writer.Flush() if err := writer.Error(); err != nil { - slog.Error("Failed to write csv", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to write csv", slog.Any("error", err)) return } @@ -246,14 +246,14 @@ func (h *ClusterHandler) GetDeploysReport(ctx *gin.Context) { func (h *ClusterHandler) Update(ctx *gin.Context) { var req types.ClusterRequest if err := ctx.ShouldBindJSON(&req); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } req.ClusterID = ctx.Param("id") result, err := h.c.Update(ctx.Request.Context(), req) if err != nil { - slog.Error("Failed to update cluster info", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to update cluster info", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } diff --git a/api/handler/code.go b/api/handler/code.go index 0fbed0fd6..09ca8ae54 100644 --- a/api/handler/code.go +++ b/api/handler/code.go @@ -59,7 +59,7 @@ func (h *CodeHandler) Create(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) var req *types.CreateCodeReq if err := ctx.ShouldBindJSON(&req); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -70,7 +70,7 @@ func (h *CodeHandler) Create(ctx *gin.Context) { _, err := h.sensitive.CheckRequestV2(ctx.Request.Context(), req) if err != nil { - slog.Error("failed to check sensitive request", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "failed to check sensitive request", slog.Any("error", err)) httpbase.BadRequest(ctx, fmt.Errorf("sensitive check failed: %w", err).Error()) return } @@ -83,7 +83,7 @@ func (h *CodeHandler) Create(ctx *gin.Context) { } else if errors.Is(err, errorx.ErrDatabaseDuplicateKey) { httpbase.BadRequestWithExt(ctx, err) } else { - slog.Error("Failed to create code", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to create code", slog.Any("error", err)) httpbase.ServerError(ctx, err) } return @@ -120,7 +120,7 @@ func (h *CodeHandler) Index(ctx *gin.Context) { filter.Username = httpbase.GetCurrentUser(ctx) per, page, err := common.GetPerAndPageFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -132,7 +132,7 @@ func (h *CodeHandler) Index(ctx *gin.Context) { Set("param", "sort"). Set("provided", filter.Sort). Set("allowed", types.Sorts)) - slog.Error("Bad request format,", slog.String("error", msg)) + slog.ErrorContext(ctx.Request.Context(), "Bad request format,", slog.String("error", msg)) httpbase.BadRequestWithExt(ctx, err) return } @@ -144,7 +144,7 @@ func (h *CodeHandler) Index(ctx *gin.Context) { Set("param", "source"). Set("provided", filter.Source). Set("allowed", types.Sources)) - slog.Error("Bad request format,", slog.String("error", msg)) + slog.ErrorContext(ctx.Request.Context(), "Bad request format,", slog.String("error", msg)) httpbase.BadRequestWithExt(ctx, err) return } @@ -157,7 +157,7 @@ func (h *CodeHandler) Index(ctx *gin.Context) { codes, total, err := h.code.Index(ctx.Request.Context(), filter, per, page, needOpWeight) if err != nil { - slog.Error("Failed to get codes", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get codes", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -184,14 +184,14 @@ func (h *CodeHandler) Update(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) var req *types.UpdateCodeReq if err := ctx.ShouldBindJSON(&req); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } _, err := h.sensitive.CheckRequestV2(ctx.Request.Context(), req) if err != nil { - slog.Error("failed to check sensitive request", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "failed to check sensitive request", slog.Any("error", err)) httpbase.BadRequest(ctx, fmt.Errorf("sensitive check failed: %w", err).Error()) return } @@ -199,7 +199,7 @@ func (h *CodeHandler) Update(ctx *gin.Context) { namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -212,7 +212,7 @@ func (h *CodeHandler) Update(ctx *gin.Context) { httpbase.ForbiddenError(ctx, err) return } - slog.Error("Failed to update code", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to update code", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -239,7 +239,7 @@ func (h *CodeHandler) Delete(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -249,7 +249,7 @@ func (h *CodeHandler) Delete(ctx *gin.Context) { httpbase.ForbiddenError(ctx, err) return } - slog.Error("Failed to delete code", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to delete code", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -276,7 +276,7 @@ func (h *CodeHandler) Delete(ctx *gin.Context) { func (h *CodeHandler) Show(ctx *gin.Context) { namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -291,7 +291,7 @@ func (h *CodeHandler) Show(ctx *gin.Context) { qNeedMultiSync := ctx.Query("need_multi_sync") needMultiSync, err := strconv.ParseBool(qNeedMultiSync) if err != nil { - slog.Error("bad need_multi_sync params", slog.Any("need_multi_sync", qNeedMultiSync), slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "bad need_multi_sync params", slog.Any("need_multi_sync", qNeedMultiSync), slog.Any("error", err)) needMultiSync = false } @@ -301,7 +301,7 @@ func (h *CodeHandler) Show(ctx *gin.Context) { httpbase.ForbiddenError(ctx, err) return } - slog.Error("Failed to get code", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get code", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -336,7 +336,7 @@ func (h *CodeHandler) Relations(ctx *gin.Context) { httpbase.ForbiddenError(ctx, err) return } - slog.Error("Failed to get code relations", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get code relations", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } diff --git a/api/handler/collection.go b/api/handler/collection.go index 4bfe07955..0a4b36afd 100644 --- a/api/handler/collection.go +++ b/api/handler/collection.go @@ -61,19 +61,19 @@ func (c *CollectionHandler) Index(ctx *gin.Context) { Set("param", "sort"). Set("provided", filter.Sort). Set("allowed", types.CollectionSorts)) - slog.Error("Bad request format,", slog.String("error", msg)) + slog.ErrorContext(ctx.Request.Context(), "Bad request format,", slog.String("error", msg)) httpbase.BadRequestWithExt(ctx, err) return } per, page, err := common.GetPerAndPageFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } collections, total, err := c.collection.GetCollections(ctx.Request.Context(), filter, per, page) if err != nil { - slog.Error("Failed to load collections", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Failed to load collections", "error", err) httpbase.ServerError(ctx, err) return } @@ -101,14 +101,14 @@ func (c *CollectionHandler) Create(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) var req *types.CreateCollectionReq if err := ctx.ShouldBindJSON(&req); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } _, err := c.sensitive.CheckRequestV2(ctx.Request.Context(), req) if err != nil { - slog.Error("failed to check sensitive request", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "failed to check sensitive request", slog.Any("error", err)) httpbase.BadRequest(ctx, fmt.Errorf("sensitive check failed: %w", err).Error()) return } @@ -116,7 +116,7 @@ func (c *CollectionHandler) Create(ctx *gin.Context) { req.Username = currentUser collection, err := c.collection.CreateCollection(ctx.Request.Context(), *req) if err != nil { - slog.Error("Failed to create collection", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to create collection", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -137,14 +137,14 @@ func (c *CollectionHandler) Create(ctx *gin.Context) { func (c *CollectionHandler) GetCollection(ctx *gin.Context) { id, err := strconv.ParseInt(ctx.Param("id"), 10, 64) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } currentUser := httpbase.GetCurrentUser(ctx) collection, err := c.collection.GetCollection(ctx.Request.Context(), currentUser, id) if err != nil { - slog.Error("Failed to get collection", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get collection", slog.Any("error", err)) if errors.Is(err, errorx.ErrDatabaseNoRows) { httpbase.NotFoundError(ctx, err) return @@ -173,21 +173,21 @@ func (c *CollectionHandler) GetCollection(ctx *gin.Context) { func (c *CollectionHandler) UpdateCollection(ctx *gin.Context) { var req *types.CreateCollectionReq if err := ctx.ShouldBindJSON(&req); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } _, err := c.sensitive.CheckRequestV2(ctx.Request.Context(), req) if err != nil { - slog.Error("failed to check sensitive request", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "failed to check sensitive request", slog.Any("error", err)) httpbase.BadRequest(ctx, fmt.Errorf("sensitive check failed: %w", err).Error()) return } id, err := strconv.ParseInt(ctx.Param("id"), 10, 64) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -196,7 +196,7 @@ func (c *CollectionHandler) UpdateCollection(ctx *gin.Context) { collection, err := c.collection.UpdateCollection(ctx.Request.Context(), *req) if err != nil { - slog.Error("Failed to create space", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to create space", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -220,14 +220,14 @@ func (c *CollectionHandler) DeleteCollection(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) id, err := strconv.ParseInt(ctx.Param("id"), 10, 64) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } err = c.collection.DeleteCollection(ctx.Request.Context(), id, currentUser) if err != nil { - slog.Error("Failed to delete collection", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to delete collection", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -252,14 +252,14 @@ func (c *CollectionHandler) AddRepoToCollection(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) var req *types.UpdateCollectionReposReq if err := ctx.ShouldBindJSON(&req); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } req.Username = currentUser id, err := strconv.ParseInt(ctx.Param("id"), 10, 64) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -271,7 +271,7 @@ func (c *CollectionHandler) AddRepoToCollection(ctx *gin.Context) { Remark: remark, }) if err != nil { - slog.Error("Failed to check sensitive request", + slog.ErrorContext(ctx.Request.Context(), "Failed to check sensitive request", slog.Int64("collection_id", req.ID), slog.Int64("repo_id", repoId), slog.Any("error", err)) @@ -283,7 +283,7 @@ func (c *CollectionHandler) AddRepoToCollection(ctx *gin.Context) { err = c.collection.AddReposToCollection(ctx.Request.Context(), *req) if err != nil { - slog.Error("Failed to create collection", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to create collection", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -307,14 +307,14 @@ func (c *CollectionHandler) RemoveRepoFromCollection(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) var req *types.UpdateCollectionReposReq if err := ctx.ShouldBindJSON(&req); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } req.Username = currentUser id, err := strconv.ParseInt(ctx.Param("id"), 10, 64) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -322,7 +322,7 @@ func (c *CollectionHandler) RemoveRepoFromCollection(ctx *gin.Context) { err = c.collection.RemoveReposFromCollection(ctx.Request.Context(), *req) if err != nil { - slog.Error("Failed to create collection", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to create collection", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -348,21 +348,21 @@ func (c *CollectionHandler) UpdateCollectionRepo(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) var req *types.UpdateCollectionRepoReq if err := ctx.ShouldBindJSON(&req); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, errorx.ReqBodyFormat(err, nil)) return } collectionId, err := strconv.ParseInt(ctx.Param("id"), 10, 64) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, errorx.ReqBodyFormat(err, nil)) return } req.ID = collectionId repoId, err := strconv.ParseInt(ctx.Param("repo_id"), 10, 64) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, errorx.ReqBodyFormat(err, nil)) return } @@ -372,7 +372,7 @@ func (c *CollectionHandler) UpdateCollectionRepo(ctx *gin.Context) { Remark: req.Remark, }) if err != nil { - slog.Error("Failed to check sensitive request", + slog.ErrorContext(ctx.Request.Context(), "Failed to check sensitive request", slog.Int64("collection_id", collectionId), slog.Int64("repo_id", repoId), slog.Any("error", err)) @@ -387,7 +387,7 @@ func (c *CollectionHandler) UpdateCollectionRepo(ctx *gin.Context) { httpbase.ForbiddenError(ctx, err) return } - slog.Error("Failed to update repo remark", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to update repo remark", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } diff --git a/api/handler/csgbot.go b/api/handler/csgbot.go index 372e8bf9d..0a8492e9a 100644 --- a/api/handler/csgbot.go +++ b/api/handler/csgbot.go @@ -52,7 +52,7 @@ func (h *CSGBotProxyHandler) Proxy(ctx *gin.Context) { return } if len(token) == 0 { - slog.Error("fail to get or create user first git access token", slog.Any("user", currentUser), slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "fail to get or create user first git access token", slog.Any("user", currentUser), slog.Any("error", err)) httpbase.ServerError(ctx, errors.New("can not get user first available access token")) ctx.Abort() return diff --git a/api/handler/dataflow.go b/api/handler/dataflow.go index 569581abf..866767fd0 100644 --- a/api/handler/dataflow.go +++ b/api/handler/dataflow.go @@ -52,7 +52,7 @@ func (h *DataflowProxyHandler) Proxy(ctx *gin.Context) { return } if len(token) == 0 { - slog.Error("fail to get or create user first git access token", slog.Any("user", currentUser), slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "fail to get or create user first git access token", slog.Any("user", currentUser), slog.Any("error", err)) httpbase.ServerError(ctx, errors.New("can not get user first available access token")) ctx.Abort() return diff --git a/api/handler/dataset.go b/api/handler/dataset.go index 16b2c65e5..6bc4bde09 100644 --- a/api/handler/dataset.go +++ b/api/handler/dataset.go @@ -61,7 +61,7 @@ func (h *DatasetHandler) Create(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) var req *types.CreateDatasetReq if err := ctx.ShouldBindJSON(&req); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, errorx.ReqBodyFormat(err, nil)) return } @@ -72,7 +72,7 @@ func (h *DatasetHandler) Create(ctx *gin.Context) { req.Username = currentUser _, err := h.sensitive.CheckRequestV2(ctx.Request.Context(), req) if err != nil { - slog.Error("failed to check sensitive request", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "failed to check sensitive request", slog.Any("error", err)) httpbase.ServerError(ctx, fmt.Errorf("sensitive check failed: %w", err)) return } @@ -89,7 +89,7 @@ func (h *DatasetHandler) Create(ctx *gin.Context) { } else if errors.Is(err, errorx.ErrDatabaseDuplicateKey) { httpbase.BadRequestWithExt(ctx, err) } else { - slog.Error("Failed to create dataset", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to create dataset", slog.Any("error", err)) httpbase.ServerError(ctx, err) } return @@ -125,7 +125,7 @@ func (h *DatasetHandler) Index(ctx *gin.Context) { filter.Username = httpbase.GetCurrentUser(ctx) per, page, err := common.GetPerAndPageFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } @@ -133,7 +133,7 @@ func (h *DatasetHandler) Index(ctx *gin.Context) { if !slices.Contains(types.Sorts, filter.Sort) { err = fmt.Errorf("sort parameter must be one of %v", types.Sorts) err = errorx.ReqParamInvalid(err, errorx.Ctx().Set("query", "sort_filter")) - slog.Error("Bad sort request format,", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Bad sort request format,", slog.Any("error", err)) httpbase.BadRequestWithExt(ctx, err) return } @@ -141,7 +141,7 @@ func (h *DatasetHandler) Index(ctx *gin.Context) { if filter.Source != "" && !slices.Contains(types.Sources, filter.Source) { err = fmt.Errorf("source parameter must be one of %v", types.Sources) err = errorx.ReqParamInvalid(err, errorx.Ctx().Set("query", "source_filter")) - slog.Error("Bad source request format,", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Bad source request format,", slog.Any("error", err)) httpbase.BadRequestWithExt(ctx, err) return } @@ -153,7 +153,7 @@ func (h *DatasetHandler) Index(ctx *gin.Context) { } datasets, total, err := h.dataset.Index(ctx.Request.Context(), filter, per, page, needOpWeight) if err != nil { - slog.Error("Failed to get datasets", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get datasets", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -180,14 +180,14 @@ func (h *DatasetHandler) Update(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) var req *types.UpdateDatasetReq if err := ctx.ShouldBindJSON(&req); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, errorx.ReqBodyFormat(err, nil)) return } _, err := h.sensitive.CheckRequestV2(ctx.Request.Context(), req) if err != nil { - slog.Error("failed to check sensitive request", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "failed to check sensitive request", slog.Any("error", err)) httpbase.ServerError(ctx, fmt.Errorf("sensitive check failed: %w", err)) return } @@ -195,7 +195,7 @@ func (h *DatasetHandler) Update(ctx *gin.Context) { namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } @@ -204,7 +204,7 @@ func (h *DatasetHandler) Update(ctx *gin.Context) { dataset, err := h.dataset.Update(ctx.Request.Context(), req) if err != nil { - slog.Error("Failed to update dataset", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to update dataset", slog.Any("error", err)) if errors.Is(err, errorx.ErrForbidden) { httpbase.ForbiddenError(ctx, err) return @@ -235,7 +235,7 @@ func (h *DatasetHandler) Delete(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } @@ -245,7 +245,7 @@ func (h *DatasetHandler) Delete(ctx *gin.Context) { httpbase.ForbiddenError(ctx, err) return } - slog.Error("Failed to delete dataset", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to delete dataset", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -272,7 +272,7 @@ func (h *DatasetHandler) Delete(ctx *gin.Context) { func (h *DatasetHandler) Show(ctx *gin.Context) { namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } @@ -294,7 +294,7 @@ func (h *DatasetHandler) Show(ctx *gin.Context) { httpbase.ForbiddenError(ctx, err) return } - slog.Error("Failed to get dataset", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get dataset", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -319,7 +319,7 @@ func (h *DatasetHandler) Show(ctx *gin.Context) { func (h *DatasetHandler) Relations(ctx *gin.Context) { namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } @@ -330,7 +330,7 @@ func (h *DatasetHandler) Relations(ctx *gin.Context) { httpbase.ForbiddenError(ctx, err) return } - slog.Error("Failed to get dataset relations", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get dataset relations", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } diff --git a/api/handler/discussion.go b/api/handler/discussion.go index e2f101e44..0ae2c8ae6 100644 --- a/api/handler/discussion.go +++ b/api/handler/discussion.go @@ -57,7 +57,7 @@ func (h *DiscussionHandler) CreateRepoDiscussion(ctx *gin.Context) { repoType := h.getRepoType(ctx) namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -70,7 +70,7 @@ func (h *DiscussionHandler) CreateRepoDiscussion(ctx *gin.Context) { _, err = h.sensitive.CheckRequestV2(ctx.Request.Context(), &req) if err != nil { - slog.Error("failed to check sensitive request", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "failed to check sensitive request", slog.Any("error", err)) httpbase.BadRequest(ctx, fmt.Errorf("sensitive check failed: %w", err).Error()) return } @@ -85,7 +85,7 @@ func (h *DiscussionHandler) CreateRepoDiscussion(ctx *gin.Context) { httpbase.ForbiddenError(ctx, err) return } - slog.Error("Failed to create repo discussion", "error", err, "request", req) + slog.ErrorContext(ctx.Request.Context(), "Failed to create repo discussion", "error", err, "request", req) httpbase.ServerError(ctx, fmt.Errorf("failed to create repo discussion: %w", err)) return } @@ -121,7 +121,7 @@ func (h *DiscussionHandler) UpdateDiscussion(ctx *gin.Context) { } _, err = h.sensitive.CheckRequestV2(ctx.Request.Context(), &req) if err != nil { - slog.Error("failed to check sensitive request", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "failed to check sensitive request", slog.Any("error", err)) httpbase.BadRequest(ctx, fmt.Errorf("sensitive check failed: %w", err).Error()) return } @@ -134,7 +134,7 @@ func (h *DiscussionHandler) UpdateDiscussion(ctx *gin.Context) { httpbase.ForbiddenError(ctx, err) return } - slog.Error("Failed to update discussion", "error", err, "request", req) + slog.ErrorContext(ctx.Request.Context(), "Failed to update discussion", "error", err, "request", req) httpbase.ServerError(ctx, fmt.Errorf("failed to update discussion: %w", err)) return } @@ -160,7 +160,7 @@ func (h *DiscussionHandler) DeleteDiscussion(ctx *gin.Context) { id := ctx.Param("id") idInt, err := strconv.ParseInt(id, 10, 64) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -170,7 +170,7 @@ func (h *DiscussionHandler) DeleteDiscussion(ctx *gin.Context) { httpbase.ForbiddenError(ctx, err) return } - slog.Error("Failed to delete discussion", "error", err, "id", id) + slog.ErrorContext(ctx.Request.Context(), "Failed to delete discussion", "error", err, "id", id) httpbase.ServerError(ctx, fmt.Errorf("failed to delete discussion: %w", err)) return } @@ -196,13 +196,13 @@ func (h *DiscussionHandler) ShowDiscussion(ctx *gin.Context) { id := ctx.Param("id") idInt, err := strconv.ParseInt(id, 10, 64) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } cPer, cPage, err := common.GetPerAndPageFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -213,7 +213,7 @@ func (h *DiscussionHandler) ShowDiscussion(ctx *gin.Context) { } else if errors.Is(err, errorx.ErrDatabaseNoRows) { httpbase.NotFoundError(ctx, err) } else { - slog.Error("Failed to get discussion", "error", err, "id", id) + slog.ErrorContext(ctx.Request.Context(), "Failed to get discussion", "error", err, "id", id) httpbase.ServerError(ctx, fmt.Errorf("failed to get discussion: %w", err)) } return @@ -248,7 +248,7 @@ func (h *DiscussionHandler) ListRepoDiscussions(ctx *gin.Context) { } per, page, err := common.GetPerAndPageFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -266,7 +266,7 @@ func (h *DiscussionHandler) ListRepoDiscussions(ctx *gin.Context) { } else if errors.Is(err, errorx.ErrDatabaseNoRows) { httpbase.NotFoundError(ctx, err) } else { - slog.Error("Failed to list repo discussions", "error", err, "request", req) + slog.ErrorContext(ctx.Request.Context(), "Failed to list repo discussions", "error", err, "request", req) httpbase.ServerError(ctx, fmt.Errorf("failed to list repo discussions: %w", err)) } return @@ -303,7 +303,7 @@ func (h *DiscussionHandler) CreateDiscussionComment(ctx *gin.Context) { } _, err = h.sensitive.CheckRequestV2(ctx.Request.Context(), &req) if err != nil { - slog.Error("failed to check sensitive request", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "failed to check sensitive request", slog.Any("error", err)) httpbase.BadRequest(ctx, fmt.Errorf("sensitive check failed: %w", err).Error()) return } @@ -313,7 +313,7 @@ func (h *DiscussionHandler) CreateDiscussionComment(ctx *gin.Context) { resp, err := h.discussion.CreateDiscussionComment(ctx.Request.Context(), req) if err != nil { - slog.Error("Failed to create discussion comment", "error", err, "request", req) + slog.ErrorContext(ctx.Request.Context(), "Failed to create discussion comment", "error", err, "request", req) httpbase.ServerError(ctx, fmt.Errorf("failed to create discussion comment: %w", err)) return } @@ -350,7 +350,7 @@ func (h *DiscussionHandler) UpdateComment(ctx *gin.Context) { } _, err = h.sensitive.CheckRequestV2(ctx.Request.Context(), &req) if err != nil { - slog.Error("failed to check sensitive request", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "failed to check sensitive request", slog.Any("error", err)) httpbase.BadRequest(ctx, fmt.Errorf("sensitive check failed: %w", err).Error()) return } @@ -361,7 +361,7 @@ func (h *DiscussionHandler) UpdateComment(ctx *gin.Context) { httpbase.ForbiddenError(ctx, err) return } - slog.Error("Failed to update comment", "error", err, "request", req) + slog.ErrorContext(ctx.Request.Context(), "Failed to update comment", "error", err, "request", req) httpbase.ServerError(ctx, fmt.Errorf("failed to update comment: %w", err)) return } @@ -395,7 +395,7 @@ func (h *DiscussionHandler) DeleteComment(ctx *gin.Context) { httpbase.ForbiddenError(ctx, err) return } - slog.Error("Failed to delete comment", "error", err, "id", id) + slog.ErrorContext(ctx.Request.Context(), "Failed to delete comment", "error", err, "id", id) httpbase.ServerError(ctx, fmt.Errorf("failed to delete comment: %w", err)) return } @@ -427,7 +427,7 @@ func (h *DiscussionHandler) ListDiscussionComments(ctx *gin.Context) { per, page, err := common.GetPerAndPageFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } @@ -439,7 +439,7 @@ func (h *DiscussionHandler) ListDiscussionComments(ctx *gin.Context) { } else if errors.Is(err, errorx.ErrDatabaseNoRows) { httpbase.NotFoundError(ctx, err) } else { - slog.Error("Failed to list discussion comments", "error", err, "id", id) + slog.ErrorContext(ctx.Request.Context(), "Failed to list discussion comments", "error", err, "id", id) httpbase.ServerError(ctx, fmt.Errorf("failed to list discussion comments: %w", err)) } return diff --git a/api/handler/evaluation.go b/api/handler/evaluation.go index 8e0e6561b..213288b03 100644 --- a/api/handler/evaluation.go +++ b/api/handler/evaluation.go @@ -52,20 +52,20 @@ func (h *EvaluationHandler) RunEvaluation(ctx *gin.Context) { var req types.EvaluationReq if err := ctx.ShouldBindJSON(&req); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } _, err := h.sensitive.CheckRequestV2(ctx.Request.Context(), &req) if err != nil { - slog.Error("failed to check sensitive request", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "failed to check sensitive request", slog.Any("error", err)) httpbase.BadRequest(ctx, fmt.Errorf("sensitive check failed: %w", err).Error()) return } req.Username = currentUser evaluation, err := h.evaluation.CreateEvaluation(ctx.Request.Context(), req) if err != nil { - slog.Error("Failed to create evaluation job", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to create evaluation job", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -87,7 +87,7 @@ func (h *EvaluationHandler) GetEvaluation(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) id, err := strconv.ParseInt(ctx.Param("id"), 10, 64) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -96,7 +96,7 @@ func (h *EvaluationHandler) GetEvaluation(ctx *gin.Context) { req.Username = currentUser evaluation, err := h.evaluation.GetEvaluation(ctx.Request.Context(), *req) if err != nil { - slog.Error("Failed to get evaluation job", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get evaluation job", slog.Any("error", err)) if errors.Is(err, errorx.ErrForbidden) { httpbase.ForbiddenError(ctx, err) return @@ -124,7 +124,7 @@ func (h *EvaluationHandler) DeleteEvaluation(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) id, err := strconv.ParseInt(ctx.Param("id"), 10, 64) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -133,7 +133,7 @@ func (h *EvaluationHandler) DeleteEvaluation(ctx *gin.Context) { req.Username = currentUser err = h.evaluation.DeleteEvaluation(ctx.Request.Context(), *req) if err != nil { - slog.Error("Failed to delete evaluation job", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to delete evaluation job", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } diff --git a/api/handler/event.go b/api/handler/event.go index b5ab9c1a6..fe25422ad 100644 --- a/api/handler/event.go +++ b/api/handler/event.go @@ -40,7 +40,7 @@ func (h *EventHandler) Create(ctx *gin.Context) { } if err := h.ec.NewEvents(ctx.Request.Context(), events); err != nil { - slog.Error("Failed to create events", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to create events", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } diff --git a/api/handler/finetune.go b/api/handler/finetune.go index de262f476..f5f9876d7 100644 --- a/api/handler/finetune.go +++ b/api/handler/finetune.go @@ -30,13 +30,13 @@ func (h *FinetuneHandler) RunFinetuneJob(ctx *gin.Context) { var req types.FinetuneReq if err := ctx.ShouldBindJSON(&req); err != nil { - slog.Error("Bad finetune request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad finetune request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } _, err := h.sensitive.CheckRequestV2(ctx.Request.Context(), &req) if err != nil { - slog.Error("failed to check sensitive request for create finetune", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "failed to check sensitive request for create finetune", slog.Any("error", err)) httpbase.BadRequest(ctx, fmt.Errorf("sensitive check failed: %w", err).Error()) return } @@ -46,7 +46,7 @@ func (h *FinetuneHandler) RunFinetuneJob(ctx *gin.Context) { req.Username = currentUser finetune, err := h.ftComp.CreateFinetuneJob(ctx.Request.Context(), req) if err != nil { - slog.Error("Failed to create finetune job", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to create finetune job", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -71,7 +71,7 @@ func (h *FinetuneHandler) GetFinetuneJob(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) id, err := strconv.ParseInt(ctx.Param("id"), 10, 64) if err != nil { - slog.Error("Bad request format for get finetune", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format for get finetune", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -80,7 +80,7 @@ func (h *FinetuneHandler) GetFinetuneJob(ctx *gin.Context) { req.Username = currentUser finetune, err := h.ftComp.GetFinetuneJob(ctx.Request.Context(), *req) if err != nil { - slog.Error("Failed to get finetune job by id", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get finetune job by id", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -102,7 +102,7 @@ func (h *FinetuneHandler) DeleteFinetuneJob(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) id, err := strconv.ParseInt(ctx.Param("id"), 10, 64) if err != nil { - slog.Error("Bad request format for delete finetune", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format for delete finetune", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -111,7 +111,7 @@ func (h *FinetuneHandler) DeleteFinetuneJob(ctx *gin.Context) { req.Username = currentUser err = h.ftComp.DeleteFinetuneJob(ctx.Request.Context(), *req) if err != nil { - slog.Error("failed to delete finetune job", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "failed to delete finetune job", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } diff --git a/api/handler/git_http.go b/api/handler/git_http.go index 04a9f90e1..89dbbbb2d 100644 --- a/api/handler/git_http.go +++ b/api/handler/git_http.go @@ -57,7 +57,7 @@ func (h *GitHTTPHandler) InfoRefs(ctx *gin.Context) { } reader, err := h.gitHttp.InfoRefs(ctx.Request.Context(), req) if err != nil { - slog.Error("git http info refs", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "git http info refs", slog.Any("error", err)) if errors.Is(err, errorx.ErrUnauthorized) { ctx.Header("WWW-Authenticate", "Basic realm=opencsg-git") ctx.PureJSON(http.StatusUnauthorized, nil) @@ -125,7 +125,7 @@ func (h *GitHTTPHandler) GitUploadPack(ctx *gin.Context) { err := h.gitHttp.GitUploadPack(ctx.Request.Context(), req) if err != nil { - slog.Error("git http upload pack error", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "git http upload pack error", slog.Any("error", err)) if errors.Is(err, errorx.ErrForbidden) { httpbase.ForbiddenError(ctx, err) return @@ -169,7 +169,7 @@ func (h *GitHTTPHandler) GitReceivePack(ctx *gin.Context) { err = h.gitHttp.GitReceivePack(ctx.Request.Context(), req) if err != nil { - slog.Error("git http upload pack failed", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "git http upload pack failed", slog.Any("error", err)) if errors.Is(err, errorx.ErrContentLengthTooLarge) { ctx.PureJSON(http.StatusBadRequest, gin.H{ "error": "File too large. Please track it using Git LFS.", @@ -195,7 +195,7 @@ func (h *GitHTTPHandler) GitReceivePack(ctx *gin.Context) { func (h *GitHTTPHandler) LfsBatch(ctx *gin.Context) { var batchRequest types.BatchRequest if err := ctx.ShouldBindJSON(&batchRequest); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -208,7 +208,7 @@ func (h *GitHTTPHandler) LfsBatch(ctx *gin.Context) { objectResponse, err := h.gitHttp.LFSBatch(ctx.Request.Context(), batchRequest) if err != nil { - slog.Error("git http lfs batch error", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "git http lfs batch error", slog.Any("error", err)) httpErr := &errorx.HTTPError{} switch { case errors.Is(err, errorx.ErrUnauthorized): @@ -234,7 +234,7 @@ func (h *GitHTTPHandler) LfsBatch(ctx *gin.Context) { func (h *GitHTTPHandler) LfsBatchHF(ctx *gin.Context) { var batchRequest types.BatchRequest if err := ctx.ShouldBindJSON(&batchRequest); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -251,7 +251,7 @@ func (h *GitHTTPHandler) LfsBatchHF(ctx *gin.Context) { objectResponse, err := h.gitHttp.LFSBatch(ctx.Request.Context(), batchRequest) if err != nil { - slog.Error("git http lfs batch hf error", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "git http lfs batch hf error", slog.Any("error", err)) httpErr := &errorx.HTTPError{} switch { case errors.Is(err, errorx.ErrUnauthorized): @@ -280,7 +280,7 @@ func (h *GitHTTPHandler) LfsUpload(ctx *gin.Context) { uploadRequest.Oid = ctx.Param("oid") uploadRequest.Size, err = strconv.ParseInt(ctx.Param("size"), 10, 64) if err != nil { - slog.Error("Invalid lfs file size", slog.String("size", ctx.Param("size"))) + slog.ErrorContext(ctx.Request.Context(), "Invalid lfs file size", slog.String("size", ctx.Param("size"))) httpbase.BadRequest(ctx, fmt.Sprintf("Invalid lfs file size: %s", ctx.Param("size"))) return } @@ -296,7 +296,7 @@ func (h *GitHTTPHandler) LfsUpload(ctx *gin.Context) { err = h.gitHttp.LfsUpload(ctx.Request.Context(), ctx.Request.Body, uploadRequest) if err != nil { - slog.Error("Failed to upload lfs file", slog.Any("error", err), slog.String("namespace", uploadRequest.Namespace), slog.String("name", uploadRequest.Name), slog.String("oid", uploadRequest.Oid)) + slog.ErrorContext(ctx.Request.Context(), "Failed to upload lfs file", slog.Any("error", err), slog.String("namespace", uploadRequest.Namespace), slog.String("name", uploadRequest.Name), slog.String("oid", uploadRequest.Oid)) if errors.Is(err, errorx.ErrForbidden) { httpbase.UnauthorizedError(ctx, err) } @@ -312,7 +312,7 @@ func (h *GitHTTPHandler) LfsDownload(ctx *gin.Context) { downloadRequest.Oid = ctx.Param("oid") downloadRequest.Size, err = strconv.ParseInt(ctx.Param("size"), 10, 64) if err != nil { - slog.Error("Invalid lfs file size", slog.String("size", ctx.Param("size"))) + slog.ErrorContext(ctx.Request.Context(), "Invalid lfs file size", slog.String("size", ctx.Param("size"))) httpbase.BadRequest(ctx, fmt.Sprintf("Invalid lfs file size: %s", ctx.Param("size"))) return } @@ -336,7 +336,7 @@ func (h *GitHTTPHandler) LfsVerify(ctx *gin.Context) { verifyRequest types.VerifyRequest ) if err := ctx.ShouldBindJSON(&pointer); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -348,7 +348,7 @@ func (h *GitHTTPHandler) LfsVerify(ctx *gin.Context) { err := h.gitHttp.LfsVerify(ctx.Request.Context(), verifyRequest, pointer) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -370,7 +370,7 @@ func (h *GitHTTPHandler) ListLocks(ctx *gin.Context) { if id != "" { req.ID, err = strconv.ParseInt(id, 10, 64) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) ctx.PureJSON(http.StatusBadRequest, types.LFSLockError{ Message: "unable to delete lock : Invalid request", }) @@ -409,7 +409,7 @@ func (h *GitHTTPHandler) ListLocks(ctx *gin.Context) { func (h *GitHTTPHandler) CreateLock(ctx *gin.Context) { var req types.LfsLockReq if err := ctx.ShouldBindJSON(&req); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) ctx.PureJSON(http.StatusBadRequest, types.LFSLockError{ Message: "unable to delete lock : Invalid request", }) @@ -445,7 +445,7 @@ func (h *GitHTTPHandler) CreateLock(ctx *gin.Context) { }) return } - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) ctx.PureJSON(http.StatusInternalServerError, types.LFSLockError{ Message: "unable to delete lock : Internal Server Error", }) @@ -466,7 +466,7 @@ func (h *GitHTTPHandler) CreateLock(ctx *gin.Context) { func (h *GitHTTPHandler) VerifyLock(ctx *gin.Context) { var req types.VerifyLFSLockReq if err := ctx.ShouldBindJSON(&req); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) ctx.PureJSON(http.StatusBadRequest, types.LFSLockError{ Message: "unable to delete lock : Invalid request", }) @@ -492,7 +492,7 @@ func (h *GitHTTPHandler) VerifyLock(ctx *gin.Context) { res, err := h.gitHttp.VerifyLock(ctx.Request.Context(), req) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) ctx.PureJSON(http.StatusInternalServerError, types.LFSLockError{ Message: "unable to delete lock : Internal Server Error", }) @@ -509,7 +509,7 @@ func (h *GitHTTPHandler) UnLock(ctx *gin.Context) { ) if err := ctx.ShouldBindJSON(&req); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) ctx.PureJSON(http.StatusInternalServerError, types.LFSLockError{ Message: "unable to delete lock : Bad request format", }) @@ -517,7 +517,7 @@ func (h *GitHTTPHandler) UnLock(ctx *gin.Context) { } req.ID, err = strconv.ParseInt(ctx.Param("lid"), 10, 64) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) ctx.PureJSON(http.StatusBadRequest, types.LFSLockError{ Message: "unable to delete lock : Invalid id", }) @@ -550,7 +550,7 @@ func (h *GitHTTPHandler) UnLock(ctx *gin.Context) { }) return } - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) ctx.PureJSON(http.StatusInternalServerError, types.LFSLockError{ Message: "unable to delete lock : Internal Server Error", }) @@ -574,20 +574,20 @@ func (h *GitHTTPHandler) CompleteMultipartUpload(ctx *gin.Context) { bodyReq types.CompleteMultipartUploadBody ) if err := ctx.ShouldBindQuery(&req); err != nil { - slog.Error("invalid request body", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "invalid request body", slog.Any("error", err)) httpbase.BadRequest(ctx, err.Error()) return } if err := ctx.ShouldBindJSON(&bodyReq); err != nil { - slog.Error("invalid json body", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "invalid json body", slog.Any("error", err)) httpbase.BadRequest(ctx, err.Error()) return } code, err := h.gitHttp.CompleteMultipartUpload(ctx.Request.Context(), req, bodyReq) if err != nil { - slog.Error("failed to complete multipart upload", slog.Any("req", req), slog.Any("bodyReq", bodyReq), slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "failed to complete multipart upload", slog.Any("req", req), slog.Any("bodyReq", bodyReq), slog.Any("error", err)) ctx.PureJSON(code, gin.H{ "msg": err.Error(), }) diff --git a/api/handler/hf_dataset.go b/api/handler/hf_dataset.go index c609cbb1d..5d3b5e9e1 100644 --- a/api/handler/hf_dataset.go +++ b/api/handler/hf_dataset.go @@ -30,7 +30,7 @@ type HFDatasetHandler struct { func (h *HFDatasetHandler) DatasetPathsInfo(ctx *gin.Context) { namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format for dataset path info", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format for dataset path info", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -52,7 +52,7 @@ func (h *HFDatasetHandler) DatasetPathsInfo(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) params, err := url.ParseQuery(string(body)) if err != nil { - slog.Error("error parsing query body", slog.Any("body", string(body)), slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "error parsing query body", slog.Any("body", string(body)), slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -68,7 +68,7 @@ func (h *HFDatasetHandler) DatasetPathsInfo(ctx *gin.Context) { res, err := h.dc.GetPathsInfo(ctx.Request.Context(), req) if err != nil { - slog.Error("fail to get dataset paths info", slog.Any("req", req), slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "fail to get dataset paths info", slog.Any("req", req), slog.Any("error", err)) httpbase.ServerError(ctx, err) } ctx.PureJSON(http.StatusOK, res) @@ -77,7 +77,7 @@ func (h *HFDatasetHandler) DatasetPathsInfo(ctx *gin.Context) { func (h *HFDatasetHandler) DatasetTree(ctx *gin.Context) { namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format for dataset tree", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format for dataset tree", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -102,7 +102,7 @@ func (h *HFDatasetHandler) DatasetTree(ctx *gin.Context) { tree, err := h.dc.GetDatasetTree(ctx.Request.Context(), req) if err != nil { - slog.Error("fail to get dataset tree", slog.Any("req", req), slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "fail to get dataset tree", slog.Any("req", req), slog.Any("error", err)) httpbase.ServerError(ctx, err) } ctx.PureJSON(http.StatusOK, tree) diff --git a/api/handler/internal.go b/api/handler/internal.go index 13b929c03..d83d652ec 100644 --- a/api/handler/internal.go +++ b/api/handler/internal.go @@ -58,7 +58,7 @@ type allowedRequest struct { func (h *InternalHandler) Allowed(ctx *gin.Context) { var req allowedRequest if err := ctx.ShouldBind(&req); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -81,7 +81,7 @@ func (h *InternalHandler) SSHAllowed(ctx *gin.Context) { gitEnv types.GitEnv ) if err := ctx.ShouldBind(&rawReq); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -98,7 +98,7 @@ func (h *InternalHandler) SSHAllowed(ctx *gin.Context) { if rawReq.Env != "" { err := json.Unmarshal([]byte(rawReq.Env), &gitEnv) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -154,7 +154,7 @@ func (h *InternalHandler) SSHAllowed(ctx *gin.Context) { // rawReq types.GitalyAllowedReq // ) // if err := ctx.ShouldBind(&rawReq); err != nil { -// slog.Error("Bad request format", "error", err) +// slog.ErrorContext(ctx.Request.Context(),"Bad request format", "error", err) // httpbase.BadRequest(ctx, err.Error()) // return // } @@ -174,7 +174,7 @@ func (h *InternalHandler) SSHAllowed(ctx *gin.Context) { func (h *InternalHandler) LfsAuthenticate(ctx *gin.Context) { var req types.LfsAuthenticateReq if err := ctx.ShouldBind(&req); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -206,7 +206,7 @@ func (h *InternalHandler) PostReceive(ctx *gin.Context) { var req types.PostReceiveReq if err := ctx.ShouldBind(&req); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -234,7 +234,7 @@ func (h *InternalHandler) PostReceive(ctx *gin.Context) { } callback, err := h.internal.GetCommitDiff(ctx.Request.Context(), diffReq) if err != nil { - slog.Error("post receive: failed to get commit diff", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "post receive: failed to get commit diff", slog.Any("error", err)) if diffReq.RightCommitId == types.NoCommitID { // delete branch action ctx.PureJSON(http.StatusOK, successResp) @@ -255,7 +255,7 @@ func (h *InternalHandler) PostReceive(ctx *gin.Context) { ctx.Request.Context(), workflowOptions, workflow.HandlePushWorkflow, callback, ) if err != nil { - slog.Error("failed to handle git push callback", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "failed to handle git push callback", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -281,7 +281,7 @@ func (h *InternalHandler) CallDataViewer(ctx context.Context, namespace, name, b } res, err := h.internal.TriggerDataviewerWorkflow(ctx, req) if err != nil { - slog.Error("fail to read dataviewer response", slog.Any("req", req), slog.Any("err", err)) + slog.ErrorContext(ctx, "fail to read dataviewer response", slog.Any("req", req), slog.Any("err", err)) return } slog.Info("dataviewer callback response", slog.Any("req", req), slog.Any("res", res)) @@ -291,7 +291,7 @@ func (h *InternalHandler) GetAuthorizedKeys(ctx *gin.Context) { key := ctx.Query("key") sshKey, err := h.internal.GetAuthorizedKeys(ctx.Request.Context(), key) if err != nil { - slog.Error("failed to get authorize keys", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "failed to get authorize keys", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } diff --git a/api/handler/list.go b/api/handler/list.go index 87577174f..dc752ee96 100644 --- a/api/handler/list.go +++ b/api/handler/list.go @@ -46,14 +46,14 @@ type ListHandler struct { func (h *ListHandler) ListModelsByPath(ctx *gin.Context) { var listTrendingReq types.ListByPathReq if err := ctx.ShouldBindJSON(&listTrendingReq); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } resp, err := h.c.ListModelsByPath(ctx.Request.Context(), &listTrendingReq) if err != nil { - slog.Error("Failed to update dataset", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to update dataset", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -75,14 +75,14 @@ func (h *ListHandler) ListModelsByPath(ctx *gin.Context) { func (h *ListHandler) ListDatasetsByPath(ctx *gin.Context) { var listTrendingReq types.ListByPathReq if err := ctx.ShouldBindJSON(&listTrendingReq); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } resp, err := h.c.ListDatasetsByPath(ctx.Request.Context(), &listTrendingReq) if err != nil { - slog.Error("Failed to update dataset", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to update dataset", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } diff --git a/api/handler/mcp_server.go b/api/handler/mcp_server.go index 6aa9cae8e..5b0dc3b49 100644 --- a/api/handler/mcp_server.go +++ b/api/handler/mcp_server.go @@ -60,14 +60,14 @@ func (h *MCPServerHandler) Create(ctx *gin.Context) { var req *types.CreateMCPServerReq if err := ctx.ShouldBindJSON(&req); err != nil { - slog.Error("Bad request format for create mcp server", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format for create mcp server", "error", err) httpbase.BadRequestWithExt(ctx, errorx.ReqBodyFormat(err, nil)) return } _, err := h.sensitive.CheckRequestV2(ctx.Request.Context(), req) if err != nil { - slog.Error("failed to check sensitive for mcp create request", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "failed to check sensitive for mcp create request", slog.Any("error", err)) httpbase.ServerError(ctx, fmt.Errorf("sensitive check failed: %w", err)) return } @@ -81,7 +81,7 @@ func (h *MCPServerHandler) Create(ctx *gin.Context) { } else if errors.Is(err, errorx.ErrDatabaseDuplicateKey) { httpbase.BadRequestWithExt(ctx, err) } else { - slog.Error("failed to create mcp server", slog.Any("req", req), slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "failed to create mcp server", slog.Any("req", req), slog.Any("error", err)) httpbase.ServerError(ctx, err) } return @@ -107,7 +107,7 @@ func (h *MCPServerHandler) Delete(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format for remove mcp server", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format for remove mcp server", "error", err) httpbase.BadRequestWithExt(ctx, err) return } @@ -126,7 +126,7 @@ func (h *MCPServerHandler) Delete(ctx *gin.Context) { httpbase.ForbiddenError(ctx, err) return } - slog.Error("failed to delete mcp server", slog.Any("error", err), slog.Any("namespace", namespace), slog.Any("name", name)) + slog.ErrorContext(ctx.Request.Context(), "failed to delete mcp server", slog.Any("error", err), slog.Any("namespace", namespace), slog.Any("name", name)) httpbase.ServerError(ctx, err) return } @@ -153,14 +153,14 @@ func (h *MCPServerHandler) Update(ctx *gin.Context) { namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad mcp server request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad mcp server request format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } var req *types.UpdateMCPServerReq if err := ctx.ShouldBindJSON(&req); err != nil { - slog.Error("Bad request body format for update mcp server", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request body format for update mcp server", "error", err) httpbase.BadRequestWithExt(ctx, errorx.ReqBodyFormat(err, nil)) return } @@ -171,7 +171,7 @@ func (h *MCPServerHandler) Update(ctx *gin.Context) { _, err = h.sensitive.CheckRequestV2(ctx.Request.Context(), req) if err != nil { - slog.Error("failed to check sensitive request for update mcp server", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "failed to check sensitive request for update mcp server", slog.Any("error", err)) httpbase.ServerError(ctx, fmt.Errorf("sensitive check failed: %w", err)) return } @@ -182,7 +182,7 @@ func (h *MCPServerHandler) Update(ctx *gin.Context) { httpbase.ForbiddenError(ctx, err) return } - slog.Error("failed to update mcp server", slog.Any("error", err), slog.Any("ns", namespace), slog.Any("name", name)) + slog.ErrorContext(ctx.Request.Context(), "failed to update mcp server", slog.Any("error", err), slog.Any("ns", namespace), slog.Any("name", name)) httpbase.ServerError(ctx, err) return } @@ -209,7 +209,7 @@ func (h *MCPServerHandler) Update(ctx *gin.Context) { func (h *MCPServerHandler) Show(ctx *gin.Context) { namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } @@ -233,7 +233,7 @@ func (h *MCPServerHandler) Show(ctx *gin.Context) { httpbase.ForbiddenError(ctx, err) return } - slog.Error("failed to get mcp server", slog.Any("error", err), slog.Any("ns", namespace), slog.Any("name", name)) + slog.ErrorContext(ctx.Request.Context(), "failed to get mcp server", slog.Any("error", err), slog.Any("ns", namespace), slog.Any("name", name)) httpbase.ServerError(ctx, err) return } @@ -267,7 +267,7 @@ func (h *MCPServerHandler) Index(ctx *gin.Context) { filter.Username = httpbase.GetCurrentUser(ctx) per, page, err := common.GetPerAndPageFromContext(ctx) if err != nil { - slog.Error("Bad request format for mcp list", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format for mcp list", "error", err) httpbase.BadRequestWithExt(ctx, err) return } @@ -275,7 +275,7 @@ func (h *MCPServerHandler) Index(ctx *gin.Context) { if !slices.Contains(types.Sorts, filter.Sort) { err = fmt.Errorf("sort parameter must be one of %v", types.Sorts) err = errorx.ReqParamInvalid(err, errorx.Ctx().Set("query", "sort_filter")) - slog.Error("check list mcp server filter", slog.Any("filter", filter)) + slog.ErrorContext(ctx.Request.Context(), "check list mcp server filter", slog.Any("filter", filter)) httpbase.BadRequestWithExt(ctx, err) return } @@ -288,7 +288,7 @@ func (h *MCPServerHandler) Index(ctx *gin.Context) { mcps, total, err := h.mcpComp.Index(ctx.Request.Context(), filter, per, page, needOpWeight) if err != nil { - slog.Error("failed to get mcp servers", slog.Any("error", err), slog.Any("filter", filter)) + slog.ErrorContext(ctx.Request.Context(), "failed to get mcp servers", slog.Any("error", err), slog.Any("filter", filter)) httpbase.ServerError(ctx, err) return } @@ -320,7 +320,7 @@ func (h *MCPServerHandler) Properties(ctx *gin.Context) { search := ctx.Query("search") per, page, err := common.GetPerAndPageFromContext(ctx) if err != nil { - slog.Error("Bad request format for mcp property list", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format for mcp property list", "error", err) httpbase.BadRequestWithExt(ctx, err) return } @@ -334,7 +334,7 @@ func (h *MCPServerHandler) Properties(ctx *gin.Context) { properties, total, err := h.mcpComp.Properties(ctx.Request.Context(), req) if err != nil { - slog.Error("failed to get mcp tool properties", slog.Any("error", err), slog.Any("req", req)) + slog.ErrorContext(ctx.Request.Context(), "failed to get mcp tool properties", slog.Any("error", err), slog.Any("req", req)) httpbase.ServerError(ctx, err) return } @@ -366,21 +366,21 @@ func (h *MCPServerHandler) Deploy(ctx *gin.Context) { namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad mcp server request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad mcp server request format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } var req *types.DeployMCPServerReq if err := ctx.ShouldBindJSON(&req); err != nil { - slog.Error("Bad request format for deploy mcp server", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format for deploy mcp server", "error", err) httpbase.BadRequestWithExt(ctx, errorx.ReqBodyFormat(err, nil)) return } _, err = h.sensitive.CheckRequestV2(ctx.Request.Context(), req) if err != nil { - slog.Error("failed to check sensitive for mcp deploy request", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "failed to check sensitive for mcp deploy request", slog.Any("error", err)) httpbase.ServerError(ctx, fmt.Errorf("sensitive check failed: %w", err)) return } @@ -410,7 +410,7 @@ func (h *MCPServerHandler) Deploy(ctx *gin.Context) { httpbase.ForbiddenError(ctx, err) return } - slog.Error("failed to deploy mcp server as space", slog.Any("error", err), slog.Any("req", req)) + slog.ErrorContext(ctx.Request.Context(), "failed to deploy mcp server as space", slog.Any("error", err), slog.Any("req", req)) httpbase.ServerError(ctx, err) return } diff --git a/api/handler/mirror.go b/api/handler/mirror.go index 525345c76..ad4d0580b 100644 --- a/api/handler/mirror.go +++ b/api/handler/mirror.go @@ -51,7 +51,7 @@ func (h *MirrorHandler) CreateMirrorRepo(ctx *gin.Context) { req.CurrentUser = currentUser m, err := h.mirror.CreateMirrorRepo(ctx.Request.Context(), req) if err != nil { - slog.Error("failed to create mirror repo", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "failed to create mirror repo", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -77,14 +77,14 @@ func (h *MirrorHandler) CreateMirrorRepo(ctx *gin.Context) { func (h *MirrorHandler) Repos(ctx *gin.Context) { per, page, err := common.GetPerAndPageFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } repos, total, err := h.mirror.Repos(ctx.Request.Context(), per, page) if err != nil { - slog.Error("failed to get mirror repos", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "failed to get mirror repos", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -111,7 +111,7 @@ func (h *MirrorHandler) Repos(ctx *gin.Context) { func (h *MirrorHandler) Index(ctx *gin.Context) { per, page, err := common.GetPerAndPageFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -119,7 +119,7 @@ func (h *MirrorHandler) Index(ctx *gin.Context) { search := ctx.Query("search") repos, total, err := h.mirror.Index(ctx.Request.Context(), per, page, search) if err != nil { - slog.Error("failed to get mirror repos", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "failed to get mirror repos", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -144,7 +144,7 @@ func (h *MirrorHandler) Index(ctx *gin.Context) { func (h *MirrorHandler) Statistics(ctx *gin.Context) { statusCounts, err := h.mirror.Statistics(ctx.Request.Context()) if err != nil { - slog.Error("failed to get mirror statistics", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "failed to get mirror statistics", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -173,7 +173,7 @@ func (h *MirrorHandler) BatchCreate(ctx *gin.Context) { err = h.mirror.BatchCreate(ctx.Request.Context(), req) if err != nil { - slog.Error("failed to bluk create mirrors", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "failed to bluk create mirrors", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -204,7 +204,7 @@ func (h *MirrorHandler) Tasks(ctx *gin.Context) { } resp, err := h.mirror.ListQueue(ctx.Request.Context(), countInt) if err != nil { - slog.Error("failed to get mirror tasks", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "failed to get mirror tasks", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -233,7 +233,7 @@ func (h *MirrorHandler) Delete(ctx *gin.Context) { err = h.mirror.Delete(ctx.Request.Context(), idInt) if err != nil { - slog.Error("failed to delete mirror tasks", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "failed to delete mirror tasks", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } diff --git a/api/handler/mirror_namespace_mapping.go b/api/handler/mirror_namespace_mapping.go index a5d126ed1..2b27fca6c 100644 --- a/api/handler/mirror_namespace_mapping.go +++ b/api/handler/mirror_namespace_mapping.go @@ -40,14 +40,14 @@ type MirrorNamespaceMappingHandler struct { func (h *MirrorNamespaceMappingHandler) Create(ctx *gin.Context) { var msReq types.CreateMirrorNamespaceMappingReq if err := ctx.ShouldBindJSON(&msReq); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } ms, err := h.mirrorNamespaceMapping.Create(ctx.Request.Context(), msReq) if err != nil { - slog.Error("Failed to create mirror namespace mapping", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Failed to create mirror namespace mapping", "error", err) httpbase.ServerError(ctx, err) return } @@ -67,7 +67,7 @@ func (h *MirrorNamespaceMappingHandler) Create(ctx *gin.Context) { func (h *MirrorNamespaceMappingHandler) Index(ctx *gin.Context) { ms, err := h.mirrorNamespaceMapping.Index(ctx.Request.Context()) if err != nil { - slog.Error("Failed to get mirror namespace mappings", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Failed to get mirror namespace mappings", "error", err) httpbase.ServerError(ctx, err) return } @@ -92,25 +92,25 @@ func (h *MirrorNamespaceMappingHandler) Update(ctx *gin.Context) { id := ctx.Param("id") if id == "" { err := fmt.Errorf("invalid mirror namespace mapping id") - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } if err := ctx.ShouldBindJSON(&msReq); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } msId, err := strconv.ParseInt(id, 10, 64) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } msReq.ID = msId ms, err := h.mirrorNamespaceMapping.Update(ctx.Request.Context(), msReq) if err != nil { - slog.Error("Failed to get mirror namespace mappings", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Failed to get mirror namespace mappings", "error", err) httpbase.ServerError(ctx, err) return } @@ -133,20 +133,20 @@ func (h *MirrorNamespaceMappingHandler) Get(ctx *gin.Context) { id := ctx.Param("id") if id == "" { err := fmt.Errorf("invalid mirror namespace mapping id") - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } msId, err := strconv.ParseInt(id, 10, 64) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } ms, err := h.mirrorNamespaceMapping.Get(ctx.Request.Context(), msId) if err != nil { - slog.Error("Failed to get mirror namespace mapping", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Failed to get mirror namespace mapping", "error", err) httpbase.ServerError(ctx, err) return } @@ -169,20 +169,20 @@ func (h *MirrorNamespaceMappingHandler) Delete(ctx *gin.Context) { id := ctx.Param("id") if id == "" { err := fmt.Errorf("invalid mirror namespace mapping id") - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } msId, err := strconv.ParseInt(id, 10, 64) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } err = h.mirrorNamespaceMapping.Delete(ctx.Request.Context(), msId) if err != nil { - slog.Error("Failed to delete mirror namespace mapping", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Failed to delete mirror namespace mapping", "error", err) httpbase.ServerError(ctx, err) return } diff --git a/api/handler/mirror_source.go b/api/handler/mirror_source.go index dfd2da796..79a2619d9 100644 --- a/api/handler/mirror_source.go +++ b/api/handler/mirror_source.go @@ -41,7 +41,7 @@ func (h *MirrorSourceHandler) Create(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) var msReq types.CreateMirrorSourceReq if err := ctx.ShouldBindJSON(&msReq); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -49,7 +49,7 @@ func (h *MirrorSourceHandler) Create(ctx *gin.Context) { msReq.CurrentUser = currentUser ms, err := h.mirrorSource.Create(ctx.Request.Context(), msReq) if err != nil { - slog.Error("Failed to create mirror source", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Failed to create mirror source", "error", err) httpbase.ServerError(ctx, err) return } @@ -69,7 +69,7 @@ func (h *MirrorSourceHandler) Create(ctx *gin.Context) { func (h *MirrorSourceHandler) Index(ctx *gin.Context) { ms, err := h.mirrorSource.Index(ctx.Request.Context()) if err != nil { - slog.Error("Failed to get mirror sources", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Failed to get mirror sources", "error", err) httpbase.ServerError(ctx, err) return } @@ -96,18 +96,18 @@ func (h *MirrorSourceHandler) Update(ctx *gin.Context) { id := ctx.Param("id") if id == "" { err := fmt.Errorf("invalid mirror source id") - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } if err := ctx.ShouldBindJSON(&msReq); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } msId, err := strconv.ParseInt(id, 10, 64) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -115,7 +115,7 @@ func (h *MirrorSourceHandler) Update(ctx *gin.Context) { msReq.CurrentUser = currentUser ms, err := h.mirrorSource.Update(ctx.Request.Context(), msReq) if err != nil { - slog.Error("Failed to get mirror sources", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Failed to get mirror sources", "error", err) httpbase.ServerError(ctx, err) return } @@ -138,20 +138,20 @@ func (h *MirrorSourceHandler) Get(ctx *gin.Context) { id := ctx.Param("id") if id == "" { err := fmt.Errorf("invalid mirror source id") - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } msId, err := strconv.ParseInt(id, 10, 64) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } ms, err := h.mirrorSource.Get(ctx.Request.Context(), msId) if err != nil { - slog.Error("Failed to get mirror source", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Failed to get mirror source", "error", err) httpbase.ServerError(ctx, err) return } @@ -174,20 +174,20 @@ func (h *MirrorSourceHandler) Delete(ctx *gin.Context) { id := ctx.Param("id") if id == "" { err := fmt.Errorf("invalid mirror source id") - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } msId, err := strconv.ParseInt(id, 10, 64) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } err = h.mirrorSource.Delete(ctx.Request.Context(), msId) if err != nil { - slog.Error("Failed to delete mirror source", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Failed to delete mirror source", "error", err) httpbase.ServerError(ctx, err) return } diff --git a/api/handler/model.go b/api/handler/model.go index 21402ced8..bda6f7e05 100644 --- a/api/handler/model.go +++ b/api/handler/model.go @@ -48,7 +48,7 @@ func (h *ModelHandler) Index(ctx *gin.Context) { filter.Tags = parseTagReqs(ctx) tree, err := parseTreeReqs(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } @@ -56,7 +56,7 @@ func (h *ModelHandler) Index(ctx *gin.Context) { filter.Username = httpbase.GetCurrentUser(ctx) per, page, err := common.GetPerAndPageFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } @@ -68,7 +68,7 @@ func (h *ModelHandler) Index(ctx *gin.Context) { Set("param", "sort"). Set("provided", filter.Sort). Set("allowed", types.Sorts)) - slog.Error("Bad request format,", slog.String("error", msg)) + slog.ErrorContext(ctx.Request.Context(), "Bad request format,", slog.String("error", msg)) httpbase.BadRequestWithExt(ctx, err) return } @@ -80,7 +80,7 @@ func (h *ModelHandler) Index(ctx *gin.Context) { Set("param", "source"). Set("provided", filter.Source). Set("allowed", types.Sources)) - slog.Error("Bad request format,", slog.String("error", msg)) + slog.ErrorContext(ctx.Request.Context(), "Bad request format,", slog.String("error", msg)) httpbase.BadRequestWithExt(ctx, err) return } @@ -97,7 +97,7 @@ func (h *ModelHandler) Index(ctx *gin.Context) { } models, total, err := h.model.Index(ctx.Request.Context(), filter, per, page, needOpWeight) if err != nil { - slog.Error("Failed to get models", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get models", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -122,7 +122,7 @@ func (h *ModelHandler) Create(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) var req *types.CreateModelReq if err := ctx.ShouldBindJSON(&req); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, errorx.ReqBodyFormat(err, nil)) return } @@ -134,7 +134,7 @@ func (h *ModelHandler) Create(ctx *gin.Context) { _, err := h.sensitive.CheckRequestV2(ctx.Request.Context(), req) if err != nil { - slog.Error("failed to check sensitive request", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "failed to check sensitive request", slog.Any("error", err)) httpbase.ServerError(ctx, fmt.Errorf("sensitive check failed: %w", err)) return } @@ -146,7 +146,7 @@ func (h *ModelHandler) Create(ctx *gin.Context) { } else if errors.Is(err, errorx.ErrDatabaseDuplicateKey) { httpbase.BadRequestWithExt(ctx, err) } else { - slog.Error("Failed to create model", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to create model", slog.Any("error", err)) httpbase.ServerError(ctx, err) } return @@ -174,21 +174,21 @@ func (h *ModelHandler) Update(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) var req *types.UpdateModelReq if err := ctx.ShouldBindJSON(&req); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, errorx.ReqBodyFormat(err, nil)) return } _, err := h.sensitive.CheckRequestV2(ctx.Request.Context(), req) if err != nil { - slog.Error("failed to check sensitive request", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "failed to check sensitive request", slog.Any("error", err)) httpbase.ServerError(ctx, fmt.Errorf("sensitive check failed: %w", err)) return } namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } @@ -202,7 +202,7 @@ func (h *ModelHandler) Update(ctx *gin.Context) { httpbase.ForbiddenError(ctx, err) return } - slog.Error("Failed to update model", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to update model", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -229,7 +229,7 @@ func (h *ModelHandler) Delete(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } @@ -239,7 +239,7 @@ func (h *ModelHandler) Delete(ctx *gin.Context) { httpbase.ForbiddenError(ctx, err) return } - slog.Error("Failed to delete model", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to delete model", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -266,7 +266,7 @@ func (h *ModelHandler) Delete(ctx *gin.Context) { func (h *ModelHandler) Show(ctx *gin.Context) { namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } @@ -287,7 +287,7 @@ func (h *ModelHandler) Show(ctx *gin.Context) { httpbase.ForbiddenError(ctx, err) return } - slog.Error("Failed to get model detail", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get model detail", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -299,7 +299,7 @@ func (h *ModelHandler) Show(ctx *gin.Context) { func (h *ModelHandler) SDKModelInfo(ctx *gin.Context) { namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } @@ -317,7 +317,7 @@ func (h *ModelHandler) SDKModelInfo(ctx *gin.Context) { if expand == "xetEnabled" { resp, err := h.repo.IsXnetEnabled(ctx.Request.Context(), types.ModelRepo, namespace, name, currentUser) if err != nil { - slog.Error("failed to check if xnetEnabled", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "failed to check if xnetEnabled", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -330,7 +330,7 @@ func (h *ModelHandler) SDKModelInfo(ctx *gin.Context) { httpbase.ForbiddenError(ctx, err) return } - slog.Error("Failed to get sdk model info", slog.String("namespace", namespace), slog.String("name", name), slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get sdk model info", slog.String("namespace", namespace), slog.String("name", name), slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -354,7 +354,7 @@ func (h *ModelHandler) SDKModelInfo(ctx *gin.Context) { func (h *ModelHandler) Relations(ctx *gin.Context) { namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } @@ -365,7 +365,7 @@ func (h *ModelHandler) Relations(ctx *gin.Context) { httpbase.ForbiddenError(ctx, err) return } - slog.Error("Failed to get model relations", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get model relations", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -391,7 +391,7 @@ func (h *ModelHandler) SetRelations(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } @@ -399,7 +399,7 @@ func (h *ModelHandler) SetRelations(ctx *gin.Context) { var req types.RelationDatasets err = ctx.ShouldBindJSON(&req) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, errorx.ReqBodyFormat(err, nil)) return } @@ -413,7 +413,7 @@ func (h *ModelHandler) SetRelations(ctx *gin.Context) { httpbase.ForbiddenError(ctx, err) return } - slog.Error("Failed to set datasets for model", slog.Any("req", req), slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to set datasets for model", slog.Any("req", req), slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -438,7 +438,7 @@ func (h *ModelHandler) AddDatasetRelation(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } @@ -446,7 +446,7 @@ func (h *ModelHandler) AddDatasetRelation(ctx *gin.Context) { var req types.RelationDataset err = ctx.ShouldBindJSON(&req) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, errorx.ReqBodyFormat(err, nil)) return } @@ -460,7 +460,7 @@ func (h *ModelHandler) AddDatasetRelation(ctx *gin.Context) { httpbase.ForbiddenError(ctx, err) return } - slog.Error("Failed to add dataset for model", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to add dataset for model", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -485,7 +485,7 @@ func (h *ModelHandler) DelDatasetRelation(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } @@ -493,7 +493,7 @@ func (h *ModelHandler) DelDatasetRelation(ctx *gin.Context) { var req types.RelationDataset err = ctx.ShouldBindJSON(&req) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, errorx.ReqBodyFormat(err, nil)) return } @@ -507,7 +507,7 @@ func (h *ModelHandler) DelDatasetRelation(ctx *gin.Context) { httpbase.ForbiddenError(ctx, err) return } - slog.Error("Failed to delete dataset for model", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to delete dataset for model", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -621,26 +621,26 @@ func (h *ModelHandler) DeployDedicated(ctx *gin.Context) { namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("failed to get namespace from context", "error", err) + slog.ErrorContext(ctx.Request.Context(), "failed to get namespace from context", "error", err) httpbase.BadRequestWithExt(ctx, err) return } syncing, err := h.repo.IsSyncing(ctx.Request.Context(), types.ModelRepo, namespace, name) if err != nil { - slog.Error("failed to check if model is syncing", "error", err) + slog.ErrorContext(ctx.Request.Context(), "failed to check if model is syncing", "error", err) httpbase.ServerError(ctx, err) return } if syncing { - slog.Error("model is syncing", "error", err) + slog.ErrorContext(ctx.Request.Context(), "model is syncing", "error", err) httpbase.Conflict(ctx, errors.New("model is syncing, please try again later")) return } allow, err := h.repo.AllowReadAccess(ctx.Request.Context(), types.ModelRepo, namespace, name, currentUser) if err != nil { - slog.Error("failed to check user permission", "error", err) + slog.ErrorContext(ctx.Request.Context(), "failed to check user permission", "error", err) httpbase.ServerError(ctx, errors.New("failed to check user permission")) return } @@ -654,13 +654,13 @@ func (h *ModelHandler) DeployDedicated(ctx *gin.Context) { var req types.ModelRunReq if err := ctx.ShouldBindJSON(&req); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, errorx.ReqBodyFormat(err, nil)) return } if req.MinReplica < 0 || req.MaxReplica < 0 || req.MinReplica > req.MaxReplica { - slog.Error("Bad request setting for replica", slog.Any("MinReplica", req.MinReplica), slog.Any("MaxReplica", req.MaxReplica)) + slog.ErrorContext(ctx.Request.Context(), "Bad request setting for replica", slog.Any("MinReplica", req.MinReplica), slog.Any("MaxReplica", req.MaxReplica)) ext := errorx.Ctx().Set("body", "MinReplica or MaxReplica") httpbase.BadRequestWithExt(ctx, errorx.ReqBodyFormat(err, ext)) return @@ -673,7 +673,7 @@ func (h *ModelHandler) DeployDedicated(ctx *gin.Context) { _, err = h.sensitive.CheckRequestV2(ctx.Request.Context(), &req) if err != nil { - slog.Error("failed to check sensitive request", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "failed to check sensitive request", slog.Any("error", err)) httpbase.ServerError(ctx, fmt.Errorf("sensitive check failed: %w", err)) return } @@ -701,7 +701,7 @@ func (h *ModelHandler) DeployDedicated(ctx *gin.Context) { deployID, err := h.model.Deploy(ctx.Request.Context(), epReq, req) if err != nil { - slog.Error("failed to deploy model as inference", slog.String("namespace", namespace), + slog.ErrorContext(ctx.Request.Context(), "failed to deploy model as inference", slog.String("namespace", namespace), slog.String("name", name), slog.Any("currentUser", currentUser), slog.Any("req", req), slog.Any("error", err)) httpbase.ServerError(ctx, err) return @@ -711,6 +711,8 @@ func (h *ModelHandler) DeployDedicated(ctx *gin.Context) { slog.String("name", name), slog.Int64("deploy_id", deployID)) h.createAgentInstanceTask(ctx.Request.Context(), req.Agent, fmt.Sprintf("%d", deployID), types.AgentTaskTypeInference, currentUser) + h.createAgentInstanceTask(ctx.Request.Context(), req.Agent, fmt.Sprintf("%d", deployID), types.AgentTaskTypeInference, currentUser) + // return deploy_id response := types.DeployRepo{DeployID: deployID} @@ -736,25 +738,25 @@ func (h *ModelHandler) FinetuneCreate(ctx *gin.Context) { namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("failed to get namespace from context", "error", err) + slog.ErrorContext(ctx.Request.Context(), "failed to get namespace from context", "error", err) httpbase.BadRequestWithExt(ctx, err) return } syncing, err := h.repo.IsSyncing(ctx.Request.Context(), types.ModelRepo, namespace, name) if err != nil { - slog.Error("failed to check if model is syncing", "error", err) + slog.ErrorContext(ctx.Request.Context(), "failed to check if model is syncing", "error", err) httpbase.ServerError(ctx, err) return } if syncing { - slog.Error("model is syncing", "error", err) + slog.ErrorContext(ctx.Request.Context(), "model is syncing", "error", err) httpbase.Conflict(ctx, errors.New("model is syncing, please try again later")) return } allow, err := h.repo.AllowReadAccess(ctx.Request.Context(), types.ModelRepo, namespace, name, currentUser) if err != nil { - slog.Error("failed to check user permission", "error", err) + slog.ErrorContext(ctx.Request.Context(), "failed to check user permission", "error", err) httpbase.ServerError(ctx, errors.New("failed to check user permission")) return } @@ -767,7 +769,7 @@ func (h *ModelHandler) FinetuneCreate(ctx *gin.Context) { var req types.InstanceRunReq if err := ctx.ShouldBindJSON(&req); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, errorx.ReqBodyFormat(err, nil)) return } @@ -807,7 +809,7 @@ func (h *ModelHandler) FinetuneCreate(ctx *gin.Context) { deployID, err := h.model.Deploy(ctx.Request.Context(), ftReq, *modelReq) if err != nil { - slog.Error("failed to deploy model as notebook instance", slog.String("namespace", namespace), + slog.ErrorContext(ctx.Request.Context(), "failed to deploy model as notebook instance", slog.String("namespace", namespace), slog.String("name", name), slog.Any("error", err)) httpbase.ServerError(ctx, err) return @@ -845,13 +847,13 @@ func (h *ModelHandler) DeployDelete(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } id, err = strconv.ParseInt(ctx.Param("id"), 10, 64) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) err := errorx.ReqParamInvalid(err, errorx.Ctx().Set("param", "id")) httpbase.BadRequestWithExt(ctx, err) return @@ -871,7 +873,7 @@ func (h *ModelHandler) DeployDelete(ctx *gin.Context) { httpbase.ForbiddenError(ctx, err) return } - slog.Error("Failed to delete inference", slog.Any("error", err), slog.Any("req", delReq)) + slog.ErrorContext(ctx.Request.Context(), "Failed to delete inference", slog.Any("error", err), slog.Any("req", delReq)) httpbase.ServerError(ctx, err) return } @@ -901,13 +903,13 @@ func (h *ModelHandler) FinetuneDelete(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } id, err = strconv.ParseInt(ctx.Param("id"), 10, 64) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) err = errorx.ReqParamInvalid(err, errorx.Ctx().Set("param", "id")) httpbase.BadRequestWithExt(ctx, err) return @@ -924,11 +926,11 @@ func (h *ModelHandler) FinetuneDelete(ctx *gin.Context) { err = h.repo.DeleteDeploy(ctx.Request.Context(), delReq) if err != nil { if errors.Is(err, errorx.ErrForbidden) { - slog.Error("not allowed to delete finetune", slog.Any("error", err), slog.Any("req", delReq)) + slog.ErrorContext(ctx.Request.Context(), "not allowed to delete finetune", slog.Any("error", err), slog.Any("req", delReq)) httpbase.ForbiddenError(ctx, err) return } - slog.Error("Failed to delete finetune", slog.Any("error", err), slog.Any("req", delReq)) + slog.ErrorContext(ctx.Request.Context(), "Failed to delete finetune", slog.Any("error", err), slog.Any("req", delReq)) httpbase.ServerError(ctx, err) return } @@ -958,13 +960,13 @@ func (h *ModelHandler) DeployStop(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } id, err = strconv.ParseInt(ctx.Param("id"), 10, 64) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) err = errorx.ReqParamInvalid(err, errorx.Ctx().Set("param", "id")) httpbase.BadRequestWithExt(ctx, err) return @@ -984,7 +986,7 @@ func (h *ModelHandler) DeployStop(ctx *gin.Context) { httpbase.ForbiddenError(ctx, err) return } - slog.Error("Failed to stop inference", slog.Any("error", err), slog.Any("req", stopReq)) + slog.ErrorContext(ctx.Request.Context(), "Failed to stop inference", slog.Any("error", err), slog.Any("req", stopReq)) httpbase.ServerError(ctx, err) return } @@ -1014,7 +1016,7 @@ func (h *ModelHandler) DeployStart(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } @@ -1041,7 +1043,7 @@ func (h *ModelHandler) DeployStart(ctx *gin.Context) { httpbase.ForbiddenError(ctx, err) return } - slog.Error("Failed to start inference", slog.Any("error", err), slog.Any("req", startReq)) + slog.ErrorContext(ctx.Request.Context(), "Failed to start inference", slog.Any("error", err), slog.Any("req", startReq)) httpbase.ServerError(ctx, err) return } @@ -1070,20 +1072,20 @@ func (h *ModelHandler) DeployWakeup(ctx *gin.Context) { ) namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } id, err = strconv.ParseInt(ctx.Param("id"), 10, 64) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) err = errorx.ReqParamInvalid(err, errorx.Ctx().Set("param", "id")) httpbase.BadRequestWithExt(ctx, err) return } err = h.model.Wakeup(ctx.Request.Context(), namespace, name, id) if err != nil { - slog.Error("failed to wakeup inference", slog.String("namespace", namespace), + slog.ErrorContext(ctx.Request.Context(), "failed to wakeup inference", slog.String("namespace", namespace), slog.String("name", name), slog.Any("error", err)) httpbase.ServerError(ctx, errors.New("failed to wakeup inference")) return @@ -1116,20 +1118,20 @@ func (h *ModelHandler) ListByRuntimeFrameworkID(ctx *gin.Context) { } deployType, err := strconv.Atoi(deployTypeStr) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) err = errorx.ReqParamInvalid(err, errorx.Ctx().Set("query", "deploy_type")) httpbase.BadRequestWithExt(ctx, err) return } per, page, err := common.GetPerAndPageFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } id, err := strconv.ParseInt(ctx.Param("id"), 10, 64) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) err = errorx.ReqParamInvalid(err, errorx.Ctx().Set("param", "id")) httpbase.BadRequestWithExt(ctx, err) return @@ -1137,7 +1139,7 @@ func (h *ModelHandler) ListByRuntimeFrameworkID(ctx *gin.Context) { models, total, err := h.model.ListModelsByRuntimeFrameworkID(ctx.Request.Context(), currentUser, per, page, id, deployType) if err != nil { - slog.Error("Failed to get models", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get models", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -1171,13 +1173,13 @@ func (h *ModelHandler) FinetuneStop(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } id, err = strconv.ParseInt(ctx.Param("id"), 10, 64) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) err = errorx.ReqParamInvalid(err, errorx.Ctx().Set("param", "id")) httpbase.BadRequestWithExt(ctx, err) return @@ -1197,7 +1199,7 @@ func (h *ModelHandler) FinetuneStop(ctx *gin.Context) { httpbase.ForbiddenError(ctx, err) return } - slog.Error("Failed to stop finetune", slog.Any("req", stopReq), slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to stop finetune", slog.Any("req", stopReq), slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -1227,13 +1229,13 @@ func (h *ModelHandler) FinetuneStart(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } id, err = strconv.ParseInt(ctx.Param("id"), 10, 64) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) err = errorx.ReqParamInvalid(err, errorx.Ctx().Set("param", "id")) httpbase.BadRequestWithExt(ctx, err) return @@ -1253,7 +1255,7 @@ func (h *ModelHandler) FinetuneStart(ctx *gin.Context) { httpbase.ForbiddenError(ctx, err) return } - slog.Error("Failed to start finetune", slog.Any("error", err), slog.Any("req", startReq)) + slog.ErrorContext(ctx.Request.Context(), "Failed to start finetune", slog.Any("error", err), slog.Any("req", startReq)) httpbase.ServerError(ctx, err) return } @@ -1282,7 +1284,7 @@ func (h *ModelHandler) ListAllRuntimeFramework(ctx *gin.Context) { } deployType, err := strconv.Atoi(deployTypeStr) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) err = errorx.ReqParamInvalid(err, errorx.Ctx().Set("query", "deploy_type")) httpbase.BadRequestWithExt(ctx, err) return @@ -1290,7 +1292,7 @@ func (h *ModelHandler) ListAllRuntimeFramework(ctx *gin.Context) { runtimes, err := h.model.ListAllByRuntimeFramework(ctx.Request.Context(), currentUser, deployType) if err != nil { - slog.Error("Failed to get runtime frameworks", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get runtime frameworks", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -1319,14 +1321,14 @@ func (h *ModelHandler) ListAllRuntimeFramework(ctx *gin.Context) { func (h *ModelHandler) UpdateModelRuntimeFrameworks(ctx *gin.Context) { var req types.RuntimeFrameworkModels if err := ctx.ShouldBindJSON(&req); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, errorx.ReqBodyFormat(err, nil)) return } id, err := strconv.ParseInt(ctx.Param("id"), 10, 64) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) err = errorx.ReqParamInvalid(err, errorx.Ctx().Set("param", "id")) httpbase.BadRequestWithExt(ctx, err) return @@ -1339,7 +1341,7 @@ func (h *ModelHandler) UpdateModelRuntimeFrameworks(ctx *gin.Context) { } deployType, err := strconv.Atoi(deployTypeStr) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) err = errorx.ReqParamInvalid(err, errorx.Ctx().Set("query", "deploy_type")) httpbase.BadRequestWithExt(ctx, err) return @@ -1353,7 +1355,7 @@ func (h *ModelHandler) UpdateModelRuntimeFrameworks(ctx *gin.Context) { httpbase.ForbiddenError(ctx, err) return } - slog.Error("Failed to set models runtime framework", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to set models runtime framework", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -1379,14 +1381,14 @@ func (h *ModelHandler) UpdateModelRuntimeFrameworks(ctx *gin.Context) { func (h *ModelHandler) DeleteModelRuntimeFrameworks(ctx *gin.Context) { var req types.RuntimeFrameworkModels if err := ctx.ShouldBindJSON(&req); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, errorx.ReqBodyFormat(err, nil)) return } id, err := strconv.ParseInt(ctx.Param("id"), 10, 64) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) err = errorx.ReqParamInvalid(err, errorx.Ctx().Set("param", "id")) httpbase.BadRequestWithExt(ctx, err) return @@ -1399,7 +1401,7 @@ func (h *ModelHandler) DeleteModelRuntimeFrameworks(ctx *gin.Context) { } deployType, err := strconv.Atoi(deployTypeStr) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) err = errorx.ReqParamInvalid(err, errorx.Ctx().Set("query", "deploy_type")) httpbase.BadRequestWithExt(ctx, err) return @@ -1413,7 +1415,7 @@ func (h *ModelHandler) DeleteModelRuntimeFrameworks(ctx *gin.Context) { httpbase.ForbiddenError(ctx, err) return } - slog.Error("Failed to set models runtime framework", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to set models runtime framework", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -1449,21 +1451,21 @@ func (h *ModelHandler) ListModelsOfRuntimeFrameworks(ctx *gin.Context) { } deployType, err := strconv.Atoi(deployTypeStr) if err != nil { - slog.Error("Bad request deploy type format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request deploy type format", "error", err) err = errorx.ReqParamInvalid(err, errorx.Ctx().Set("query", "deploy_type")) httpbase.BadRequestWithExt(ctx, err) return } per, page, err := common.GetPerAndPageFromContext(ctx) if err != nil { - slog.Error("Bad request per and page format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request per and page format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } models, total, err := h.model.ListModelsOfRuntimeFrameworks(ctx.Request.Context(), currentUser, filter.Search, filter.Sort, per, page, deployType) if err != nil { - slog.Error("fail to get models for all runtime frameworks", slog.Any("deployType", deployType), slog.Any("per", per), slog.Any("page", page), slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "fail to get models for all runtime frameworks", slog.Any("deployType", deployType), slog.Any("per", per), slog.Any("page", page), slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -1493,20 +1495,20 @@ func (h *ModelHandler) DeployServerless(ctx *gin.Context) { namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("failed to get namespace from context", "error", err) + slog.ErrorContext(ctx.Request.Context(), "failed to get namespace from context", "error", err) httpbase.BadRequestWithExt(ctx, err) return } var req types.ModelRunReq if err := ctx.ShouldBindJSON(&req); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, errorx.ReqBodyFormat(err, nil)) return } if req.MinReplica < 0 || req.MaxReplica < 0 || req.MinReplica > req.MaxReplica { - slog.Error("Bad request setting for replica", slog.Any("MinReplica", req.MinReplica), slog.Any("MaxReplica", req.MaxReplica)) + slog.ErrorContext(ctx.Request.Context(), "Bad request setting for replica", slog.Any("MinReplica", req.MinReplica), slog.Any("MaxReplica", req.MaxReplica)) ext := errorx.Ctx().Set("body", "MinReplica or MaxReplica") httpbase.BadRequestWithExt(ctx, errorx.ReqBodyFormat(err, ext)) return @@ -1543,7 +1545,7 @@ func (h *ModelHandler) DeployServerless(ctx *gin.Context) { httpbase.ForbiddenError(ctx, err) return } - slog.Error("failed to deploy model as serverless", slog.Any("deploy_req", deployReq), slog.Any("run_req", req), slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "failed to deploy model as serverless", slog.Any("deploy_req", deployReq), slog.Any("run_req", req), slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -1575,7 +1577,7 @@ func (h *ModelHandler) RemoveServerless(ctx *gin.Context) { namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("failed to get namespace from context", "error", err) + slog.ErrorContext(ctx.Request.Context(), "failed to get namespace from context", "error", err) httpbase.BadRequestWithExt(ctx, err) return } @@ -1627,13 +1629,13 @@ func (h *ModelHandler) ServerlessStart(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } id, err = strconv.ParseInt(ctx.Param("id"), 10, 64) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) err = errorx.ReqParamInvalid(err, errorx.Ctx().Set("param", "id")) httpbase.BadRequestWithExt(ctx, err) return @@ -1686,13 +1688,13 @@ func (h *ModelHandler) ServerlessStop(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } id, err = strconv.ParseInt(ctx.Param("id"), 10, 64) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) err = errorx.ReqParamInvalid(err, errorx.Ctx().Set("param", "id")) httpbase.BadRequestWithExt(ctx, err) return @@ -1709,7 +1711,7 @@ func (h *ModelHandler) ServerlessStop(ctx *gin.Context) { err = h.repo.DeployStop(ctx.Request.Context(), stopReq) if err != nil { - slog.Error("Failed to stop deploy", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to stop deploy", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -1732,14 +1734,14 @@ func (h *ModelHandler) GetDeployServerless(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("failed to get namespace from context", "error", err) + slog.ErrorContext(ctx.Request.Context(), "failed to get namespace from context", "error", err) httpbase.BadRequestWithExt(ctx, err) return } response, err := h.model.GetServerless(ctx.Request.Context(), namespace, name, currentUser) if err != nil { - slog.Error("failed to get model serverless endpoint", slog.String("namespace", namespace), + slog.ErrorContext(ctx.Request.Context(), "failed to get model serverless endpoint", slog.String("namespace", namespace), slog.String("name", name), slog.Any("currentUser", currentUser), slog.Any("error", err)) httpbase.ServerError(ctx, err) return @@ -1763,13 +1765,13 @@ func (h *ModelHandler) GetDeployServerless(ctx *gin.Context) { func (h *ModelHandler) ListQuantizations(ctx *gin.Context) { namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("failed to get namespace from context", "error", err) + slog.ErrorContext(ctx.Request.Context(), "failed to get namespace from context", "error", err) httpbase.BadRequestWithExt(ctx, err) return } files, err := h.model.ListQuantizations(ctx.Request.Context(), namespace, name) if err != nil { - slog.Error("failed to list quantizations", slog.String("namespace", namespace), + slog.ErrorContext(ctx.Request.Context(), "failed to list quantizations", slog.String("namespace", namespace), slog.String("name", name), slog.Any("error", err)) httpbase.ServerError(ctx, err) return diff --git a/api/handler/monitor.go b/api/handler/monitor.go index a1a8fefa8..8a78603c8 100644 --- a/api/handler/monitor.go +++ b/api/handler/monitor.go @@ -43,13 +43,13 @@ func NewMonitorHandler(cfg *config.Config) (*MonitorHandler, error) { func (h *MonitorHandler) CPUUsage(ctx *gin.Context) { req, err := getRequestParameters(ctx) if err != nil { - slog.Error("Failed to get request parameters", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get request parameters", slog.Any("error", err)) httpbase.BadRequestWithExt(ctx, err) return } resp, err := h.monitor.CPUUsage(ctx.Request.Context(), req) if err != nil { - slog.Error("Failed to get cpu usage", slog.Any("req", req), slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get cpu usage", slog.Any("req", req), slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -71,13 +71,13 @@ func (h *MonitorHandler) CPUUsage(ctx *gin.Context) { func (h *MonitorHandler) CPUUsageEvaluation(ctx *gin.Context) { req, err := getEvaluationParameters(ctx) if err != nil { - slog.Error("Failed to get request parameters", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get request parameters", slog.Any("error", err)) httpbase.BadRequestWithExt(ctx, err) return } resp, err := h.monitor.CPUUsage(ctx.Request.Context(), req) if err != nil { - slog.Error("Failed to get cpu usage", slog.Any("req", req), slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get cpu usage", slog.Any("req", req), slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -101,13 +101,13 @@ func (h *MonitorHandler) CPUUsageEvaluation(ctx *gin.Context) { func (h *MonitorHandler) MemoryUsage(ctx *gin.Context) { req, err := getRequestParameters(ctx) if err != nil { - slog.Error("Failed to get request parameters", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get request parameters", slog.Any("error", err)) httpbase.BadRequestWithExt(ctx, err) return } resp, err := h.monitor.MemoryUsage(ctx.Request.Context(), req) if err != nil { - slog.Error("Failed to get memory usage", slog.Any("req", req), slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get memory usage", slog.Any("req", req), slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -129,13 +129,13 @@ func (h *MonitorHandler) MemoryUsage(ctx *gin.Context) { func (h *MonitorHandler) MemoryUsageEvaluation(ctx *gin.Context) { req, err := getEvaluationParameters(ctx) if err != nil { - slog.Error("Failed to get request parameters", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get request parameters", slog.Any("error", err)) httpbase.BadRequestWithExt(ctx, err) return } resp, err := h.monitor.MemoryUsage(ctx.Request.Context(), req) if err != nil { - slog.Error("Failed to get memory usage", slog.Any("req", req), slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get memory usage", slog.Any("req", req), slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -159,13 +159,13 @@ func (h *MonitorHandler) MemoryUsageEvaluation(ctx *gin.Context) { func (h *MonitorHandler) RequestCount(ctx *gin.Context) { req, err := getRequestParameters(ctx) if err != nil { - slog.Error("Failed to get request parameters", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get request parameters", slog.Any("error", err)) httpbase.BadRequestWithExt(ctx, err) return } resp, err := h.monitor.RequestCount(ctx.Request.Context(), req) if err != nil { - slog.Error("Failed to get request count", slog.Any("req", req), slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get request count", slog.Any("req", req), slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -189,13 +189,13 @@ func (h *MonitorHandler) RequestCount(ctx *gin.Context) { func (h *MonitorHandler) RequestLatency(ctx *gin.Context) { req, err := getRequestParameters(ctx) if err != nil { - slog.Error("Failed to get request parameters", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get request parameters", slog.Any("error", err)) httpbase.BadRequestWithExt(ctx, err) return } resp, err := h.monitor.RequestLatency(ctx.Request.Context(), req) if err != nil { - slog.Error("Failed to get request latency", slog.Any("req", req), slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get request latency", slog.Any("req", req), slog.Any("error", err)) httpbase.ServerError(ctx, err) return } diff --git a/api/handler/notebook.go b/api/handler/notebook.go index fd5d728c0..451f86583 100644 --- a/api/handler/notebook.go +++ b/api/handler/notebook.go @@ -46,7 +46,7 @@ func (h *NotebookHandler) Create(ctx *gin.Context) { var req types.CreateNotebookReq err := ctx.ShouldBindJSON(&req) if err != nil { - slog.Error("Failed to bind json", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to bind json", slog.Any("error", err)) httpbase.BadRequest(ctx, err.Error()) return } @@ -54,7 +54,7 @@ func (h *NotebookHandler) Create(ctx *gin.Context) { req.CurrentUser = currentUser notebook, err := h.nc.CreateNotebook(ctx.Request.Context(), &req) if err != nil { - slog.Error("Failed to create notebook", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to create notebook", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -77,7 +77,7 @@ func (h *NotebookHandler) Get(ctx *gin.Context) { id, err := strconv.ParseInt(ctx.Param("id"), 10, 64) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) err := errorx.ReqParamInvalid(err, errorx.Ctx().Set("param", "id")) httpbase.BadRequestWithExt(ctx, err) return @@ -89,7 +89,7 @@ func (h *NotebookHandler) Get(ctx *gin.Context) { notebook, err := h.nc.GetNotebook(ctx.Request.Context(), req) if err != nil { - slog.Error("Failed to get notebook", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get notebook", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -111,7 +111,7 @@ func (h *NotebookHandler) Start(ctx *gin.Context) { id, err := strconv.ParseInt(ctx.Param("id"), 10, 64) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) err := errorx.ReqParamInvalid(err, errorx.Ctx().Set("param", "id")) httpbase.BadRequestWithExt(ctx, err) return @@ -123,7 +123,7 @@ func (h *NotebookHandler) Start(ctx *gin.Context) { } err = h.nc.StartNotebook(ctx.Request.Context(), req) if err != nil { - slog.Error("Failed to start notebook", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to start notebook", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -144,7 +144,7 @@ func (h *NotebookHandler) Start(ctx *gin.Context) { func (h *NotebookHandler) Stop(ctx *gin.Context) { id, err := strconv.ParseInt(ctx.Param("id"), 10, 64) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) err := errorx.ReqParamInvalid(err, errorx.Ctx().Set("param", "id")) httpbase.BadRequestWithExt(ctx, err) return @@ -156,7 +156,7 @@ func (h *NotebookHandler) Stop(ctx *gin.Context) { } err = h.nc.StopNotebook(ctx.Request.Context(), req) if err != nil { - slog.Error("Failed to stop notebook", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to stop notebook", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -181,14 +181,14 @@ func (h *NotebookHandler) Wakeup(ctx *gin.Context) { ) id, err = strconv.ParseInt(ctx.Param("id"), 10, 64) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) err = errorx.ReqParamInvalid(err, errorx.Ctx().Set("param", "id")) httpbase.BadRequestWithExt(ctx, err) return } err = h.nc.Wakeup(ctx.Request.Context(), id) if err != nil { - slog.Error("failed to wakeup notebook", slog.String("id", string(rune(id))), slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "failed to wakeup notebook", slog.String("id", string(rune(id))), slog.Any("error", err)) httpbase.ServerError(ctx, errors.New("failed to wakeup notebook")) return } @@ -209,7 +209,7 @@ func (h *NotebookHandler) Wakeup(ctx *gin.Context) { func (h *NotebookHandler) Delete(ctx *gin.Context) { id, err := strconv.ParseInt(ctx.Param("id"), 10, 64) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) err := errorx.ReqParamInvalid(err, errorx.Ctx().Set("param", "id")) httpbase.BadRequestWithExt(ctx, err) return @@ -221,7 +221,7 @@ func (h *NotebookHandler) Delete(ctx *gin.Context) { } err = h.nc.DeleteNotebook(ctx.Request.Context(), req) if err != nil { - slog.Error("Failed to delete notebook", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to delete notebook", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -244,13 +244,13 @@ func (h *NotebookHandler) Update(ctx *gin.Context) { var req types.UpdateNotebookReq err := ctx.ShouldBindJSON(&req) if err != nil { - slog.Error("Failed to bind json", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to bind json", slog.Any("error", err)) httpbase.BadRequest(ctx, err.Error()) return } id, err := strconv.ParseInt(ctx.Param("id"), 10, 64) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) err := errorx.ReqParamInvalid(err, errorx.Ctx().Set("param", "id")) httpbase.BadRequestWithExt(ctx, err) return @@ -260,7 +260,7 @@ func (h *NotebookHandler) Update(ctx *gin.Context) { req.CurrentUser = currentUser err = h.nc.UpdateNotebook(ctx.Request.Context(), &req) if err != nil { - slog.Error("Failed to update notebook", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to update notebook", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -280,7 +280,7 @@ func (h *NotebookHandler) Update(ctx *gin.Context) { func (h *NotebookHandler) Status(ctx *gin.Context) { id, err := strconv.ParseInt(ctx.Param("id"), 10, 64) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) err := errorx.ReqParamInvalid(err, errorx.Ctx().Set("param", "id")) httpbase.BadRequestWithExt(ctx, err) return @@ -310,11 +310,11 @@ func (h *NotebookHandler) Status(ctx *gin.Context) { status, err := h.nc.StatusNotebook(ctx.Request.Context(), req) if err != nil { if deadline, ok := ctx.Request.Context().Deadline(); ok { - slog.Error("failed to get notebook status in stream", slog.Any("error", err), + slog.ErrorContext(ctx.Request.Context(), "failed to get notebook status in stream", slog.Any("error", err), slog.String("notebook id", strconv.FormatInt(id, 10)), slog.Any("deadline", time.Until(deadline))) } else { - slog.Error("failed to get notebook status in stream", slog.Any("error", err), + slog.ErrorContext(ctx.Request.Context(), "failed to get notebook status in stream", slog.Any("error", err), slog.String("notebook id", strconv.FormatInt(id, 10))) } ctx.SSEvent("error", err.Error()) @@ -350,7 +350,7 @@ func (h *NotebookHandler) Logs(ctx *gin.Context) { id, err := strconv.ParseInt(ctx.Param("id"), 10, 64) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) err := errorx.ReqParamInvalid(err, errorx.Ctx().Set("param", "id")) httpbase.BadRequestWithExt(ctx, err) return @@ -371,13 +371,13 @@ func (h *NotebookHandler) Logs(ctx *gin.Context) { logReader, err := h.nc.LogsNotebook(ctx.Request.Context(), req) if err != nil { if deadline, ok := ctx.Request.Context().Deadline(); ok { - slog.Error("failed to get space logs", + slog.ErrorContext(ctx.Request.Context(), "failed to get space logs", slog.Any("error", err), slog.String("notebook id", strconv.FormatInt(id, 10)), slog.Any("deadline", time.Until(deadline)), slog.Bool("ok", ok), ) } else { - slog.Error("failed to get space logs", + slog.ErrorContext(ctx.Request.Context(), "failed to get space logs", slog.Any("error", err), slog.String("notebook id", strconv.FormatInt(id, 10)), ) diff --git a/api/handler/organization.go b/api/handler/organization.go index efcf1254a..770ee05e7 100644 --- a/api/handler/organization.go +++ b/api/handler/organization.go @@ -84,7 +84,7 @@ func (h *OrganizationHandler) Models(ctx *gin.Context) { per, page, err := common.GetPerAndPageFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } @@ -92,7 +92,7 @@ func (h *OrganizationHandler) Models(ctx *gin.Context) { req.PageSize = per models, total, err := h.model.OrgModels(ctx.Request.Context(), &req) if err != nil { - slog.Error("Failed to get org models", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get org models", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -129,7 +129,7 @@ func (h *OrganizationHandler) Datasets(ctx *gin.Context) { per, page, err := common.GetPerAndPageFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } @@ -137,7 +137,7 @@ func (h *OrganizationHandler) Datasets(ctx *gin.Context) { req.PageSize = per datasets, total, err := h.dataset.OrgDatasets(ctx.Request.Context(), &req) if err != nil { - slog.Error("Failed to get org datasets", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get org datasets", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -173,7 +173,7 @@ func (h *OrganizationHandler) Codes(ctx *gin.Context) { per, page, err := common.GetPerAndPageFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } @@ -181,7 +181,7 @@ func (h *OrganizationHandler) Codes(ctx *gin.Context) { req.PageSize = per datasets, total, err := h.code.OrgCodes(ctx.Request.Context(), &req) if err != nil { - slog.Error("Failed to get org codes", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get org codes", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -217,7 +217,7 @@ func (h *OrganizationHandler) Spaces(ctx *gin.Context) { per, page, err := common.GetPerAndPageFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } @@ -225,7 +225,7 @@ func (h *OrganizationHandler) Spaces(ctx *gin.Context) { req.PageSize = per datasets, total, err := h.space.OrgSpaces(ctx.Request.Context(), &req) if err != nil { - slog.Error("Failed to get org spaces", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get org spaces", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -261,7 +261,7 @@ func (h *OrganizationHandler) Collections(ctx *gin.Context) { per, page, err := common.GetPerAndPageFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } @@ -269,7 +269,7 @@ func (h *OrganizationHandler) Collections(ctx *gin.Context) { req.PageSize = per datasets, total, err := h.collection.OrgCollections(ctx.Request.Context(), &req) if err != nil { - slog.Error("Failed to get org collections", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get org collections", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -304,7 +304,7 @@ func (h *OrganizationHandler) Prompts(ctx *gin.Context) { per, page, err := common.GetPerAndPageFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } @@ -312,7 +312,7 @@ func (h *OrganizationHandler) Prompts(ctx *gin.Context) { req.PageSize = per prompts, total, err := h.prompt.OrgPrompts(ctx.Request.Context(), &req) if err != nil { - slog.Error("Failed to get org prompts", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get org prompts", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -347,7 +347,7 @@ func (h *OrganizationHandler) MCPServers(ctx *gin.Context) { per, page, err := common.GetPerAndPageFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } @@ -355,7 +355,7 @@ func (h *OrganizationHandler) MCPServers(ctx *gin.Context) { req.PageSize = per data, total, err := h.mcp.OrgMCPServers(ctx.Request.Context(), &req) if err != nil { - slog.Error("Failed to get org mcp servers", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get org mcp servers", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } diff --git a/api/handler/prompt.go b/api/handler/prompt.go index 82e876529..e234c2109 100644 --- a/api/handler/prompt.go +++ b/api/handler/prompt.go @@ -70,14 +70,14 @@ func (h *PromptHandler) Index(ctx *gin.Context) { filter.Username = httpbase.GetCurrentUser(ctx) per, page, err := common.GetPerAndPageFromContext(ctx) if err != nil { - slog.Error("Bad request format prompt list", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format prompt list", "error", err) httpbase.BadRequestWithExt(ctx, err) return } filter = getFilterFromContext(ctx, filter) if !slices.Contains(types.Sorts, filter.Sort) { err = fmt.Errorf("sort parameter must be one of %v", types.Sorts) - slog.Error("Bad request format,", slog.String("error", err.Error())) + slog.ErrorContext(ctx.Request.Context(), "Bad request format,", slog.String("error", err.Error())) err = errorx.ReqParamInvalid(err, errorx.Ctx().Set("query", "sort_filter")) httpbase.BadRequestWithExt(ctx, err) return @@ -85,7 +85,7 @@ func (h *PromptHandler) Index(ctx *gin.Context) { if filter.Source != "" && !slices.Contains(types.Sources, filter.Source) { err = fmt.Errorf("source parameter must be one of %v", types.Sources) - slog.Error("Bad request format,", slog.String("error", err.Error())) + slog.ErrorContext(ctx.Request.Context(), "Bad request format,", slog.String("error", err.Error())) err = errorx.ReqParamInvalid(err, errorx.Ctx().Set("query", "source_filter")) httpbase.BadRequestWithExt(ctx, err) return @@ -93,7 +93,7 @@ func (h *PromptHandler) Index(ctx *gin.Context) { prompts, total, err := h.prompt.IndexPromptRepo(ctx.Request.Context(), filter, per, page) if err != nil { - slog.Error("Failed to get prompts dataset", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get prompts dataset", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -117,7 +117,7 @@ func (h *PromptHandler) ListPrompt(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } @@ -129,7 +129,7 @@ func (h *PromptHandler) ListPrompt(ctx *gin.Context) { } else if errors.Is(err, errorx.ErrDatabaseNoRows) { httpbase.NotFoundError(ctx, err) } else { - slog.Error("Failed to get prompt detail", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get prompt detail", slog.Any("error", err)) httpbase.ServerError(ctx, err) } return @@ -142,7 +142,7 @@ func (h *PromptHandler) ListPrompt(ctx *gin.Context) { } data, err := h.prompt.ListPrompt(ctx.Request.Context(), req) if err != nil { - slog.Error("Failed to list prompts of repo", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to list prompts of repo", slog.Any("error", err)) if errors.Is(err, errorx.ErrDatabaseNoRows) { httpbase.NotFoundError(ctx, err) } else { @@ -178,7 +178,7 @@ func (h *PromptHandler) PromptDetail(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } @@ -201,7 +201,7 @@ func (h *PromptHandler) PromptDetail(ctx *gin.Context) { httpbase.UnauthorizedError(ctx, err) return } - slog.Error("Failed to get prompt detail", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get prompt detail", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -228,13 +228,13 @@ func (h *PromptHandler) GetPrompt(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } filePath := ctx.Param("file_path") if filePath == "" { - slog.Error("Bad request format", "error", "file path is required") + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", "file path is required") httpbase.BadRequestWithExt(ctx, errorx.ReqParamInvalid(errors.New("file path is required"), nil)) return } @@ -246,7 +246,7 @@ func (h *PromptHandler) GetPrompt(ctx *gin.Context) { } data, err := h.prompt.GetPrompt(ctx.Request.Context(), req) if err != nil { - slog.Error("Failed to get prompt of repo", slog.Any("req", req), slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get prompt of repo", slog.Any("req", req), slog.Any("error", err)) if errors.Is(err, errorx.ErrDatabaseNoRows) || errors.Is(err, errorx.ErrGitFileNotFound) { httpbase.NotFoundError(ctx, err) } else { @@ -275,20 +275,20 @@ func (h *PromptHandler) CreatePrompt(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } var body *types.CreatePromptReq if err := ctx.ShouldBindJSON(&body); err != nil { - slog.Error("Bad request prompt format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request prompt format", "error", err) httpbase.BadRequestWithExt(ctx, errorx.ReqBodyFormat(err, nil)) return } _, err = h.sensitive.CheckRequestV2(ctx.Request.Context(), body) if err != nil { - slog.Error("failed to check sensitive request", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "failed to check sensitive request", slog.Any("error", err)) httpbase.ServerError(ctx, fmt.Errorf("sensitive check failed: %w", err)) return } @@ -304,7 +304,7 @@ func (h *PromptHandler) CreatePrompt(ctx *gin.Context) { httpbase.ForbiddenError(ctx, err) return } - slog.Error("Failed to create prompt file of repo", slog.Any("req", req), slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to create prompt file of repo", slog.Any("req", req), slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -330,26 +330,26 @@ func (h *PromptHandler) UpdatePrompt(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } filePath := ctx.Param("file_path") if filePath == "" { - slog.Error("Bad request format", "error", "file path is required") + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", "file path is required") httpbase.BadRequestWithExt(ctx, errorx.ReqParamInvalid(errors.New("file path is required"), nil)) return } var body *types.UpdatePromptReq if err := ctx.ShouldBindJSON(&body); err != nil { - slog.Error("Bad request prompt format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request prompt format", "error", err) httpbase.BadRequestWithExt(ctx, errorx.ReqBodyFormat(err, nil)) return } _, err = h.sensitive.CheckRequestV2(ctx.Request.Context(), body) if err != nil { - slog.Error("failed to check sensitive request", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "failed to check sensitive request", slog.Any("error", err)) httpbase.ServerError(ctx, fmt.Errorf("sensitive check failed: %w", err)) return } @@ -366,7 +366,7 @@ func (h *PromptHandler) UpdatePrompt(ctx *gin.Context) { httpbase.ForbiddenError(ctx, err) return } - slog.Error("Failed to update prompt file of repo", slog.Any("req", req), slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to update prompt file of repo", slog.Any("req", req), slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -392,14 +392,14 @@ func (h *PromptHandler) DeletePrompt(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } filePath := ctx.Param("file_path") if filePath == "" { - slog.Error("Bad request format", "error", "file path is required") + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", "file path is required") httpbase.BadRequestWithExt(ctx, errorx.ReqParamInvalid(errors.New("file path is required"), nil)) return } @@ -416,7 +416,7 @@ func (h *PromptHandler) DeletePrompt(ctx *gin.Context) { httpbase.ForbiddenError(ctx, err) return } - slog.Error("Failed to remove prompt file of repo", slog.Any("req", req), slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to remove prompt file of repo", slog.Any("req", req), slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -439,7 +439,7 @@ func (h *PromptHandler) DeletePrompt(ctx *gin.Context) { func (h *PromptHandler) Relations(ctx *gin.Context) { namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } @@ -450,7 +450,7 @@ func (h *PromptHandler) Relations(ctx *gin.Context) { httpbase.UnauthorizedError(ctx, err) return } - slog.Error("Failed to get prompt relations", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get prompt relations", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -476,7 +476,7 @@ func (h *PromptHandler) SetRelations(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } @@ -484,7 +484,7 @@ func (h *PromptHandler) SetRelations(ctx *gin.Context) { var req types.RelationModels err = ctx.ShouldBindJSON(&req) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, errorx.ReqBodyFormat(err, nil)) return } @@ -498,7 +498,7 @@ func (h *PromptHandler) SetRelations(ctx *gin.Context) { httpbase.ForbiddenError(ctx, err) return } - slog.Error("Failed to set models for prompt", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to set models for prompt", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -523,7 +523,7 @@ func (h *PromptHandler) AddModelRelation(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } @@ -531,7 +531,7 @@ func (h *PromptHandler) AddModelRelation(ctx *gin.Context) { var req types.RelationModel err = ctx.ShouldBindJSON(&req) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, errorx.ReqBodyFormat(err, nil)) return } @@ -545,7 +545,7 @@ func (h *PromptHandler) AddModelRelation(ctx *gin.Context) { httpbase.ForbiddenError(ctx, err) return } - slog.Error("Failed to add model for prompt", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to add model for prompt", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -570,7 +570,7 @@ func (h *PromptHandler) DelModelRelation(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } @@ -578,7 +578,7 @@ func (h *PromptHandler) DelModelRelation(ctx *gin.Context) { var req types.RelationModel err = ctx.ShouldBindJSON(&req) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, errorx.ReqBodyFormat(err, nil)) return } @@ -592,7 +592,7 @@ func (h *PromptHandler) DelModelRelation(ctx *gin.Context) { httpbase.ForbiddenError(ctx, err) return } - slog.Error("Failed to delete dataset for model", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to delete dataset for model", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -616,13 +616,13 @@ func (h *PromptHandler) Create(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) var req *types.CreatePromptRepoReq if err := ctx.ShouldBindJSON(&req); err != nil { - slog.Error("Bad request prompt repo format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request prompt repo format", "error", err) httpbase.BadRequestWithExt(ctx, errorx.ReqBodyFormat(err, nil)) return } _, err := h.sensitive.CheckRequestV2(ctx.Request.Context(), req) if err != nil { - slog.Error("failed to check sensitive request", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "failed to check sensitive request", slog.Any("error", err)) httpbase.ServerError(ctx, fmt.Errorf("sensitive check failed: %w", err)) return } @@ -634,7 +634,7 @@ func (h *PromptHandler) Create(ctx *gin.Context) { httpbase.ForbiddenError(ctx, err) return } - slog.Error("Failed to create prompt repo", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to create prompt repo", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -661,14 +661,14 @@ func (h *PromptHandler) Update(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) var req *types.UpdatePromptRepoReq if err := ctx.ShouldBindJSON(&req); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, errorx.ReqBodyFormat(err, nil)) return } _, err := h.sensitive.CheckRequestV2(ctx.Request.Context(), req) if err != nil { - slog.Error("failed to check sensitive request", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "failed to check sensitive request", slog.Any("error", err)) httpbase.ServerError(ctx, fmt.Errorf("sensitive check failed: %w", err)) return } @@ -676,7 +676,7 @@ func (h *PromptHandler) Update(ctx *gin.Context) { namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } @@ -685,7 +685,7 @@ func (h *PromptHandler) Update(ctx *gin.Context) { prompt, err := h.prompt.UpdatePromptRepo(ctx.Request.Context(), req) if err != nil { - slog.Error("Failed to update prompt repo", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to update prompt repo", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -711,13 +711,13 @@ func (h *PromptHandler) Delete(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } err = h.prompt.RemoveRepo(ctx.Request.Context(), namespace, name, currentUser) if err != nil { - slog.Error("Failed to delete prompt repo", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to delete prompt repo", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -741,13 +741,13 @@ func (h *PromptHandler) Delete(ctx *gin.Context) { func (h *PromptHandler) Branches(ctx *gin.Context) { namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } per, page, err := common.GetPerAndPageFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } @@ -766,7 +766,7 @@ func (h *PromptHandler) Branches(ctx *gin.Context) { httpbase.ForbiddenError(ctx, err) return } - slog.Error("Failed to get prompt repo branches", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get prompt repo branches", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -790,7 +790,7 @@ func (h *PromptHandler) Branches(ctx *gin.Context) { func (h *PromptHandler) Tags(ctx *gin.Context) { namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } @@ -807,7 +807,7 @@ func (h *PromptHandler) Tags(ctx *gin.Context) { httpbase.ForbiddenError(ctx, err) return } - slog.Error("Failed to get prompt repo tags", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get prompt repo tags", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -833,7 +833,7 @@ func (h *PromptHandler) UpdateTags(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Failed update tags", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Failed update tags", "error", err) httpbase.BadRequestWithExt(ctx, err) return } @@ -850,7 +850,7 @@ func (h *PromptHandler) UpdateTags(ctx *gin.Context) { httpbase.ForbiddenError(ctx, err) return } - slog.Error("Failed to update tags", slog.String("error", err.Error()), slog.String("category", category), slog.String("namespace", namespace), slog.String("name", name)) + slog.ErrorContext(ctx.Request.Context(), "Failed to update tags", slog.String("error", err.Error()), slog.String("category", category), slog.String("namespace", namespace), slog.String("name", name)) httpbase.ServerError(ctx, err) return } @@ -862,13 +862,13 @@ func (h *PromptHandler) UpdateDownloads(ctx *gin.Context) { var req *types.UpdateDownloadsReq namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } if err := ctx.ShouldBindJSON(&req); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, errorx.ReqBodyFormat(err, nil)) return } @@ -878,7 +878,7 @@ func (h *PromptHandler) UpdateDownloads(ctx *gin.Context) { req.RepoType = types.PromptRepo date, err := time.Parse("2006-01-02", req.ReqDate) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, errorx.ReqParamInvalid(err, nil)) return } @@ -886,7 +886,7 @@ func (h *PromptHandler) UpdateDownloads(ctx *gin.Context) { err = h.repo.UpdateDownloads(ctx.Request.Context(), req) if err != nil { - slog.Error("Failed to update repo download count", slog.Any("error", err), slog.String("namespace", namespace), slog.String("name", name), slog.Time("date", date), slog.Int64("clone_count", req.CloneCount)) + slog.ErrorContext(ctx.Request.Context(), "Failed to update repo download count", slog.Any("error", err), slog.String("namespace", namespace), slog.String("name", name), slog.Time("date", date), slog.Int64("clone_count", req.CloneCount)) httpbase.ServerError(ctx, err) return } diff --git a/api/handler/recom.go b/api/handler/recom.go index c5fede6ce..20ecac802 100644 --- a/api/handler/recom.go +++ b/api/handler/recom.go @@ -51,7 +51,7 @@ func (h *RecomHandler) SetOpWeight(ctx *gin.Context) { err := h.c.SetOpWeight(ctx.Request.Context(), req.RepoID, req.Weight) if err != nil { - slog.Error("failed to set op weight", slog.Int64("repo_id", req.RepoID), slog.Int64("weight", req.Weight), + slog.ErrorContext(ctx.Request.Context(), "failed to set op weight", slog.Int64("repo_id", req.RepoID), slog.Int64("weight", req.Weight), slog.Any("error", err)) httpbase.ServerError(ctx, fmt.Errorf("failed to set op weight for repository %d, err:%w", req.RepoID, err)) return diff --git a/api/handler/repo.go b/api/handler/repo.go index 7ceedebe8..a3064c018 100644 --- a/api/handler/repo.go +++ b/api/handler/repo.go @@ -71,7 +71,7 @@ func (h *RepoHandler) CreateRepo(ctx *gin.Context) { userName := httpbase.GetCurrentUser(ctx) var req *types.CreateRepoReq if err := ctx.ShouldBindJSON(&req); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -95,7 +95,7 @@ func (h *RepoHandler) CreateRepo(ctx *gin.Context) { ctx.JSON(http.StatusConflict, resp) return } - slog.Error("Failed to create model repo", slog.String("repo_type", string(req.RepoType)), slog.Any("error", err), slog.Any("req", req)) + slog.ErrorContext(ctx.Request.Context(), "Failed to create model repo", slog.String("repo_type", string(req.RepoType)), slog.Any("error", err), slog.Any("req", req)) httpbase.ServerError(ctx, err) return } @@ -113,14 +113,14 @@ func (h *RepoHandler) CreateRepo(ctx *gin.Context) { ctx.JSON(http.StatusConflict, resp) return } - slog.Error("Failed to create dataset repo", slog.String("repo_type", string(req.RepoType)), slog.Any("error", err), slog.Any("req", req)) + slog.ErrorContext(ctx.Request.Context(), "Failed to create dataset repo", slog.String("repo_type", string(req.RepoType)), slog.Any("error", err), slog.Any("req", req)) httpbase.ServerError(ctx, err) return } ctx.JSON(http.StatusOK, resp) default: // Unsupported repo type - slog.Error("Unsupported repo type", slog.String("repo_type", string(req.RepoType))) + slog.ErrorContext(ctx.Request.Context(), "Unsupported repo type", slog.String("repo_type", string(req.RepoType))) httpbase.BadRequest(ctx, fmt.Sprintf("Unsupported repo type: %s", req.RepoType)) return } @@ -140,14 +140,14 @@ func (h *RepoHandler) CreateRepo(ctx *gin.Context) { func (h *RepoHandler) ValidateYaml(ctx *gin.Context) { var req types.ValidateYamlReq if err := ctx.ShouldBindJSON(&req); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } err := h.c.ValidateYaml(ctx.Request.Context(), req) if err != nil { - slog.Error("Failed to validate yaml", slog.Any("error", err), slog.Any("req", req)) + slog.ErrorContext(ctx.Request.Context(), "Failed to validate yaml", slog.Any("error", err), slog.Any("req", req)) ctx.JSON(http.StatusBadRequest, gin.H{"errors": []string{err.Error()}}) return } @@ -174,7 +174,7 @@ func (h *RepoHandler) CreateFile(ctx *gin.Context) { userName := httpbase.GetCurrentUser(ctx) var req *types.CreateFileReq if err := ctx.ShouldBindJSON(&req); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -182,7 +182,7 @@ func (h *RepoHandler) CreateFile(ctx *gin.Context) { namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -196,7 +196,7 @@ func (h *RepoHandler) CreateFile(ctx *gin.Context) { resp, err := h.c.CreateFile(ctx.Request.Context(), req) if err != nil { - slog.Error("Failed to create repo file", slog.String("repo_type", string(req.RepoType)), slog.Any("error", err), slog.Any("req", req)) + slog.ErrorContext(ctx.Request.Context(), "Failed to create repo file", slog.String("repo_type", string(req.RepoType)), slog.Any("error", err), slog.Any("req", req)) httpbase.ServerError(ctx, err) return } @@ -224,7 +224,7 @@ func (h *RepoHandler) UpdateFile(ctx *gin.Context) { userName := httpbase.GetCurrentUser(ctx) var req *types.UpdateFileReq if err := ctx.ShouldBindJSON(&req); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -232,7 +232,7 @@ func (h *RepoHandler) UpdateFile(ctx *gin.Context) { namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -247,7 +247,7 @@ func (h *RepoHandler) UpdateFile(ctx *gin.Context) { resp, err := h.c.UpdateFile(ctx.Request.Context(), req) if err != nil { - slog.Error("Failed to update repo file", slog.String("repo_type", string(req.RepoType)), slog.Any("error", err), slog.Any("req", req)) + slog.ErrorContext(ctx.Request.Context(), "Failed to update repo file", slog.String("repo_type", string(req.RepoType)), slog.Any("error", err), slog.Any("req", req)) httpbase.ServerError(ctx, err) return } @@ -275,7 +275,7 @@ func (h *RepoHandler) DeleteFile(ctx *gin.Context) { userName := httpbase.GetCurrentUser(ctx) var req *types.DeleteFileReq if err := ctx.ShouldBindJSON(&req); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } @@ -283,7 +283,7 @@ func (h *RepoHandler) DeleteFile(ctx *gin.Context) { namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } @@ -300,7 +300,7 @@ func (h *RepoHandler) DeleteFile(ctx *gin.Context) { resp, err := h.c.DeleteFile(ctx.Request.Context(), req) if err != nil { - slog.Error("Failed to delete repo file", slog.String("repo_type", string(req.RepoType)), slog.Any("error", err), slog.Any("req", req)) + slog.ErrorContext(ctx.Request.Context(), "Failed to delete repo file", slog.String("repo_type", string(req.RepoType)), slog.Any("error", err), slog.Any("req", req)) httpbase.ServerError(ctx, err) return } @@ -329,13 +329,13 @@ func (h *RepoHandler) DeleteFile(ctx *gin.Context) { func (h *RepoHandler) Commits(ctx *gin.Context) { namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } per, page, err := common.GetPerAndPageFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -352,7 +352,7 @@ func (h *RepoHandler) Commits(ctx *gin.Context) { } commits, pageOpt, err := h.c.Commits(ctx.Request.Context(), req) if err != nil { - slog.Error("Failed to get repo commits", slog.String("repo_type", string(req.RepoType)), slog.Any("error", err), slog.Any("req", req)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get repo commits", slog.String("repo_type", string(req.RepoType)), slog.Any("error", err), slog.Any("req", req)) httpbase.ServerError(ctx, err) return } @@ -384,7 +384,7 @@ func (h *RepoHandler) Commits(ctx *gin.Context) { func (h *RepoHandler) LastCommit(ctx *gin.Context) { namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -403,7 +403,7 @@ func (h *RepoHandler) LastCommit(ctx *gin.Context) { httpbase.ForbiddenError(ctx, err) return } - slog.Error("Failed to get repo last commit", slog.String("repo_type", string(req.RepoType)), slog.Any("error", err), slog.Any("req", req)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get repo last commit", slog.String("repo_type", string(req.RepoType)), slog.Any("error", err), slog.Any("req", req)) httpbase.ServerError(ctx, err) return } @@ -431,7 +431,7 @@ func (h *RepoHandler) LastCommit(ctx *gin.Context) { func (h *RepoHandler) FileRaw(ctx *gin.Context) { namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -448,7 +448,12 @@ func (h *RepoHandler) FileRaw(ctx *gin.Context) { } raw, err := h.c.FileRaw(ctx.Request.Context(), req) if err != nil { - slog.Error("Failed to get repo file raw", slog.String("repo_type", string(req.RepoType)), slog.Any("error", err), slog.Any("req", req)) + if errors.Is(err, errorx.ErrNotFound) { + slog.ErrorContext(ctx.Request.Context(), "Repo file not found", slog.String("repo_type", string(req.RepoType)), slog.Any("req", req)) + httpbase.NotFoundError(ctx, err) + return + } + slog.ErrorContext(ctx.Request.Context(), "Failed to get repo file raw", slog.String("repo_type", string(req.RepoType)), slog.Any("error", err), slog.Any("req", req)) httpbase.ServerError(ctx, err) return } @@ -476,7 +481,7 @@ func (h *RepoHandler) FileRaw(ctx *gin.Context) { func (h *RepoHandler) FileInfo(ctx *gin.Context) { namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -493,7 +498,7 @@ func (h *RepoHandler) FileInfo(ctx *gin.Context) { } file, err := h.c.FileInfo(ctx.Request.Context(), req) if err != nil { - slog.Error("Failed to get repo file info", slog.Any("req", req), slog.Any("error", err), slog.Any("req", req)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get repo file info", slog.Any("req", req), slog.Any("error", err), slog.Any("req", req)) if errors.Is(err, errorx.ErrGitFileNotFound) || errors.Is(err, errorx.ErrGitCommitNotFound) { httpbase.NotFoundError(ctx, err) } else { @@ -527,7 +532,7 @@ func (h *RepoHandler) DownloadFile(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -546,7 +551,7 @@ func (h *RepoHandler) DownloadFile(ctx *gin.Context) { if ctx.Query("lfs") != "" { req.Lfs, err = strconv.ParseBool(ctx.Query("lfs")) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -554,7 +559,7 @@ func (h *RepoHandler) DownloadFile(ctx *gin.Context) { reader, size, url, err := h.c.DownloadFile(ctx.Request.Context(), req, currentUser) if err != nil { - slog.Error("Failed to download repo file", slog.String("repo_type", string(req.RepoType)), slog.Any("error", err), slog.Any("req", req)) + slog.ErrorContext(ctx.Request.Context(), "Failed to download repo file", slog.String("repo_type", string(req.RepoType)), slog.Any("error", err), slog.Any("req", req)) httpbase.ServerError(ctx, err) return } @@ -569,7 +574,7 @@ func (h *RepoHandler) DownloadFile(ctx *gin.Context) { ctx.Header("Content-Length", strconv.FormatInt(size, 10)) _, err = io.Copy(ctx.Writer, reader) if err != nil { - slog.Error("Failed to download repo file", slog.String("repo_type", string(req.RepoType)), slog.Any("error", err), slog.Any("req", req)) + slog.ErrorContext(ctx.Request.Context(), "Failed to download repo file", slog.String("repo_type", string(req.RepoType)), slog.Any("error", err), slog.Any("req", req)) httpbase.ServerError(ctx, err) return } @@ -594,13 +599,13 @@ func (h *RepoHandler) DownloadFile(ctx *gin.Context) { func (h *RepoHandler) Branches(ctx *gin.Context) { namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } per, page, err := common.GetPerAndPageFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -615,7 +620,7 @@ func (h *RepoHandler) Branches(ctx *gin.Context) { } branches, err := h.c.Branches(ctx.Request.Context(), req) if err != nil { - slog.Error("Failed to get repo branches", slog.String("repo_type", string(req.RepoType)), slog.Any("error", err), slog.Any("req", req)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get repo branches", slog.String("repo_type", string(req.RepoType)), slog.Any("error", err), slog.Any("req", req)) httpbase.ServerError(ctx, err) return } @@ -641,7 +646,7 @@ func (h *RepoHandler) Branches(ctx *gin.Context) { func (h *RepoHandler) Tags(ctx *gin.Context) { namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -654,7 +659,7 @@ func (h *RepoHandler) Tags(ctx *gin.Context) { } tags, err := h.c.Tags(ctx.Request.Context(), req) if err != nil { - slog.Error("Failed to get repo tags", slog.String("repo_type", string(req.RepoType)), slog.Any("error", err), slog.Any("req", req)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get repo tags", slog.String("repo_type", string(req.RepoType)), slog.Any("error", err), slog.Any("req", req)) httpbase.ServerError(ctx, err) return } @@ -683,7 +688,7 @@ func (h *RepoHandler) UpdateTags(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Failed update tags", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Failed update tags", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -696,7 +701,7 @@ func (h *RepoHandler) UpdateTags(ctx *gin.Context) { repoType := common.RepoTypeFromContext(ctx) err = h.c.UpdateTags(ctx.Request.Context(), namespace, name, repoType, category, currentUser, tags) if err != nil { - slog.Error("Failed to update tags", slog.String("error", err.Error()), slog.String("category", category), slog.String("repo_type", string(repoType)), slog.String("namespace", namespace), slog.String("name", name)) + slog.ErrorContext(ctx.Request.Context(), "Failed to update tags", slog.String("error", err.Error()), slog.String("category", category), slog.String("repo_type", string(repoType)), slog.String("namespace", namespace), slog.String("name", name)) httpbase.ServerError(ctx, err) return } @@ -722,7 +727,7 @@ func (h *RepoHandler) UpdateTags(ctx *gin.Context) { func (h *RepoHandler) Tree(ctx *gin.Context) { namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -741,7 +746,7 @@ func (h *RepoHandler) Tree(ctx *gin.Context) { httpbase.ForbiddenError(ctx, err) return } - slog.Error("Failed to get repo file tree", slog.String("repo_type", string(req.RepoType)), slog.Any("error", err), slog.Any("req", req)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get repo file tree", slog.String("repo_type", string(req.RepoType)), slog.Any("error", err), slog.Any("req", req)) httpbase.ServerError(ctx, err) return } @@ -770,7 +775,7 @@ func (h *RepoHandler) Tree(ctx *gin.Context) { func (h *RepoHandler) TreeV2(ctx *gin.Context) { namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -795,7 +800,7 @@ func (h *RepoHandler) TreeV2(ctx *gin.Context) { } else { httpbase.ServerError(ctx, err) } - slog.Error("Failed to get tree", + slog.ErrorContext(ctx.Request.Context(), "Failed to get tree", slog.String("repo_type", string(req.RepoType)), slog.Any("error", err), slog.Any("req", req), ) @@ -825,7 +830,7 @@ func (h *RepoHandler) TreeV2(ctx *gin.Context) { func (h *RepoHandler) LogsTree(ctx *gin.Context) { namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -850,7 +855,7 @@ func (h *RepoHandler) LogsTree(ctx *gin.Context) { httpbase.ForbiddenError(ctx, err) return } - slog.Error( + slog.ErrorContext(ctx.Request.Context(), "Failed to get logs tree", slog.String("repo_type", string(req.RepoType)), slog.Any("error", err), slog.Any("req", req), @@ -866,13 +871,13 @@ func (h *RepoHandler) UpdateDownloads(ctx *gin.Context) { var req *types.UpdateDownloadsReq namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } if err := ctx.ShouldBindJSON(&req); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -882,7 +887,7 @@ func (h *RepoHandler) UpdateDownloads(ctx *gin.Context) { req.RepoType = common.RepoTypeFromContext(ctx) date, err := time.Parse("2006-01-02", req.ReqDate) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -890,7 +895,7 @@ func (h *RepoHandler) UpdateDownloads(ctx *gin.Context) { err = h.c.UpdateDownloads(ctx.Request.Context(), req) if err != nil { - slog.Error("Failed to update repo download count", slog.String("repo_type", string(req.RepoType)), slog.Any("error", err), slog.String("namespace", namespace), slog.String("name", name), slog.Time("date", date), slog.Int64("clone_count", req.CloneCount), slog.Any("req", req)) + slog.ErrorContext(ctx.Request.Context(), "Failed to update repo download count", slog.String("repo_type", string(req.RepoType)), slog.Any("error", err), slog.String("namespace", namespace), slog.String("name", name), slog.Time("date", date), slog.Int64("clone_count", req.CloneCount), slog.Any("req", req)) httpbase.ServerError(ctx, err) return } @@ -914,7 +919,7 @@ func (h *RepoHandler) UpdateDownloads(ctx *gin.Context) { func (h *RepoHandler) IncrDownloads(ctx *gin.Context) { namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -923,7 +928,7 @@ func (h *RepoHandler) IncrDownloads(ctx *gin.Context) { err = h.c.IncrDownloads(ctx.Request.Context(), repoType, namespace, name) if err != nil { - slog.Error("Failed to increase repo download count", slog.String("repo_type", string(repoType)), slog.Any("error", err), slog.String("namespace", namespace), slog.String("name", name)) + slog.ErrorContext(ctx.Request.Context(), "Failed to increase repo download count", slog.String("repo_type", string(repoType)), slog.Any("error", err), slog.String("namespace", namespace), slog.String("name", name)) httpbase.ServerError(ctx, err) return } @@ -935,7 +940,7 @@ func (h *RepoHandler) UploadFile(ctx *gin.Context) { userName := httpbase.GetCurrentUser(ctx) namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Failed to get namespace from context", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Failed to get namespace from context", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -954,7 +959,7 @@ func (h *RepoHandler) UploadFile(ctx *gin.Context) { for idx, file := range fileList { openedFile, err := file.Open() if err != nil { - slog.Error("Error opening uploaded file", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Error opening uploaded file", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -962,7 +967,7 @@ func (h *RepoHandler) UploadFile(ctx *gin.Context) { buf.Reset() _, err = io.Copy(&buf, openedFile) if err != nil { - slog.Error("Error encodeing uploaded file", "error", err, slog.String("file_name", file.Filename)) + slog.ErrorContext(ctx.Request.Context(), "Error encodeing uploaded file", "error", err, slog.String("file_name", file.Filename)) httpbase.BadRequest(ctx, err.Error()) return } @@ -985,7 +990,7 @@ func (h *RepoHandler) UploadFile(ctx *gin.Context) { } err = h.c.UploadFile(ctx.Request.Context(), upload) if err != nil { - slog.Error("Failed to upload repo file", slog.String("repo_type", string(upload.RepoType)), slog.Any("error", err), slog.String("file_path", filePath)) + slog.ErrorContext(ctx.Request.Context(), "Failed to upload repo file", slog.String("repo_type", string(upload.RepoType)), slog.Any("error", err), slog.String("file_path", filePath)) httpbase.ServerError(ctx, err) return } @@ -999,7 +1004,7 @@ func (h *RepoHandler) SDKListFiles(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -1012,7 +1017,7 @@ func (h *RepoHandler) SDKListFiles(ctx *gin.Context) { if expand == "xetEnabled" { resp, err := h.c.IsXnetEnabled(ctx.Request.Context(), types.ModelRepo, namespace, name, currentUser) if err != nil { - slog.Error("failed to check if xnetEnabled", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "failed to check if xnetEnabled", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -1023,16 +1028,16 @@ func (h *RepoHandler) SDKListFiles(ctx *gin.Context) { files, err := h.c.SDKListFiles(ctx.Request.Context(), common.RepoTypeFromContext(ctx), namespace, name, ref, currentUser) if err != nil { if errors.Is(err, errorx.ErrUnauthorized) { - slog.Error("permission denied when accessing repo", slog.String("repo_type", string(common.RepoTypeFromContext(ctx))), slog.Any("path", fmt.Sprintf("%s/%s", namespace, name))) + slog.ErrorContext(ctx.Request.Context(), "permission denied when accessing repo", slog.String("repo_type", string(common.RepoTypeFromContext(ctx))), slog.Any("path", fmt.Sprintf("%s/%s", namespace, name))) httpbase.UnauthorizedError(ctx, err) return } if errors.Is(err, errorx.ErrNotFound) { - slog.Error("repo not found", slog.String("repo_type", string(common.RepoTypeFromContext(ctx))), slog.Any("path", fmt.Sprintf("%s/%s", namespace, name))) + slog.ErrorContext(ctx.Request.Context(), "repo not found", slog.String("repo_type", string(common.RepoTypeFromContext(ctx))), slog.Any("path", fmt.Sprintf("%s/%s", namespace, name))) httpbase.NotFoundError(ctx, err) return } - slog.Error("Error listing repo files", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Error listing repo files", "error", err) httpbase.ServerError(ctx, err) return } @@ -1069,7 +1074,7 @@ func (h *RepoHandler) HeadSDKDownload(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -1093,18 +1098,18 @@ func (h *RepoHandler) HeadSDKDownload(ctx *gin.Context) { file, commit, err := h.c.HeadDownloadFile(ctx.Request.Context(), req, currentUser) if err != nil { if errors.Is(err, errorx.ErrUnauthorized) { - slog.Error("permission denied when accessing repo head", slog.String("repo_type", string(req.RepoType)), slog.Any("path", fmt.Sprintf("%s/%s", namespace, name))) + slog.ErrorContext(ctx.Request.Context(), "permission denied when accessing repo head", slog.String("repo_type", string(req.RepoType)), slog.Any("path", fmt.Sprintf("%s/%s", namespace, name))) httpbase.UnauthorizedError(ctx, err) return } if errors.Is(err, errorx.ErrNotFound) { - slog.Error("repo not found head", slog.String("repo_type", string(common.RepoTypeFromContext(ctx))), slog.Any("path", fmt.Sprintf("%s/%s", namespace, name))) + slog.ErrorContext(ctx.Request.Context(), "repo not found head", slog.String("repo_type", string(common.RepoTypeFromContext(ctx))), slog.Any("path", fmt.Sprintf("%s/%s", namespace, name))) httpbase.NotFoundError(ctx, err) return } - slog.Error("Failed to download repo file head", slog.String("repo_type", string(req.RepoType)), slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to download repo file head", slog.String("repo_type", string(req.RepoType)), slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -1113,7 +1118,7 @@ func (h *RepoHandler) HeadSDKDownload(ctx *gin.Context) { } slog.Debug("Head download repo file succeed", slog.String("repo_type", string(req.RepoType)), slog.String("name", name), slog.String("path", req.Path), slog.String("ref", req.Ref), slog.Int64("contentLength", file.Size)) - if file.Lfs { + if file.Lfs && file.XnetEnabled { ctx.Header("X-Xet-Hash", file.LfsSHA256) ctx.Header("X-Xet-Refresh-Route", h.xetRefreshRoute(namespace, name, branch)) } @@ -1124,7 +1129,7 @@ func (h *RepoHandler) HeadSDKDownload(ctx *gin.Context) { } func (h *RepoHandler) xetRefreshRoute(namespace, name, ref string) string { - return fmt.Sprintf("%s/hf/%s/%s/xet-write-token/%s", h.config.APIServer.PublicDomain, namespace, name, ref) + return fmt.Sprintf("%s/hf/%s/%s/xet-write-token/%s", h.config.Model.DownloadEndpoint, namespace, name, ref) } func (h *RepoHandler) handleDownload(ctx *gin.Context, isResolve bool) { @@ -1141,7 +1146,7 @@ func (h *RepoHandler) handleDownload(ctx *gin.Context, isResolve bool) { ) namespace, name, err = common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -1171,12 +1176,12 @@ func (h *RepoHandler) handleDownload(ctx *gin.Context, isResolve bool) { lfs, contentLength, err := h.c.IsLfs(ctx.Request.Context(), req) if err != nil { if errors.Is(err, errorx.ErrNotFound) { - slog.Error("repo not found", slog.String("repo_type", string(common.RepoTypeFromContext(ctx))), slog.Any("path", fmt.Sprintf("%s/%s", namespace, name))) + slog.ErrorContext(ctx.Request.Context(), "repo not found", slog.String("repo_type", string(common.RepoTypeFromContext(ctx))), slog.Any("path", fmt.Sprintf("%s/%s", namespace, name))) httpbase.NotFoundError(ctx, err) return } - slog.Error("Filed to lfs information", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Filed to lfs information", "error", err) httpbase.ServerError(ctx, err) return } @@ -1187,18 +1192,18 @@ func (h *RepoHandler) handleDownload(ctx *gin.Context, isResolve bool) { reader, size, url, err = h.c.SDKDownloadFile(ctx.Request.Context(), req, currentUser) if err != nil { if errors.Is(err, errorx.ErrUnauthorized) { - slog.Error("permission denied when accessing repo", slog.String("repo_type", string(req.RepoType)), slog.Any("path", fmt.Sprintf("%s/%s", namespace, name))) + slog.ErrorContext(ctx.Request.Context(), "permission denied when accessing repo", slog.String("repo_type", string(req.RepoType)), slog.Any("path", fmt.Sprintf("%s/%s", namespace, name))) httpbase.UnauthorizedError(ctx, err) return } if errors.Is(err, errorx.ErrNotFound) { - slog.Error("repo not found", slog.String("repo_type", string(common.RepoTypeFromContext(ctx))), slog.Any("path", fmt.Sprintf("%s/%s", namespace, name))) + slog.ErrorContext(ctx.Request.Context(), "repo not found", slog.String("repo_type", string(common.RepoTypeFromContext(ctx))), slog.Any("path", fmt.Sprintf("%s/%s", namespace, name))) httpbase.NotFoundError(ctx, err) return } - slog.Error("Failed to download repo file", slog.String("repo_type", string(req.RepoType)), slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to download repo file", slog.String("repo_type", string(req.RepoType)), slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -1216,7 +1221,7 @@ func (h *RepoHandler) handleDownload(ctx *gin.Context, isResolve bool) { _, err = io.Copy(ctx.Writer, reader) } if err != nil { - slog.Error("Failed to download repo file", slog.String("repo_type", string(req.RepoType)), slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to download repo file", slog.String("repo_type", string(req.RepoType)), slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -1241,7 +1246,7 @@ func (h *RepoHandler) handleDownload(ctx *gin.Context, isResolve bool) { func (h *RepoHandler) CommitWithDiff(ctx *gin.Context) { namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -1256,7 +1261,7 @@ func (h *RepoHandler) CommitWithDiff(ctx *gin.Context) { } commit, err := h.c.GetCommitWithDiff(ctx.Request.Context(), req) if err != nil { - slog.Error("Failed to get repo with commit diff", slog.String("repo_type", string(req.RepoType)), slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get repo with commit diff", slog.String("repo_type", string(req.RepoType)), slog.Any("error", err)) if errors.Is(err, errorx.ErrGitCommitNotFound) { httpbase.NotFoundError(ctx, err) } else { @@ -1288,18 +1293,18 @@ func (h *RepoHandler) CreateMirror(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } if err = ctx.ShouldBindJSON(&mirrorReq); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } sourceRepoPath, err := getSourceRepoPathFromSourceUrl(mirrorReq.SourceUrl) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -1310,7 +1315,7 @@ func (h *RepoHandler) CreateMirror(ctx *gin.Context) { mirrorReq.SourceRepoPath = sourceRepoPath mirror, err := h.c.CreateMirror(ctx.Request.Context(), mirrorReq) if err != nil { - slog.Error("Failed to create mirror for", slog.String("repo_type", string(mirrorReq.RepoType)), slog.String("path", fmt.Sprintf("%s/%s", mirrorReq.Namespace, mirrorReq.Name)), "error", err) + slog.ErrorContext(ctx.Request.Context(), "Failed to create mirror for", slog.String("repo_type", string(mirrorReq.RepoType)), slog.String("path", fmt.Sprintf("%s/%s", mirrorReq.Namespace, mirrorReq.Name)), "error", err) httpbase.ServerError(ctx, err) return } @@ -1334,7 +1339,7 @@ func (h *RepoHandler) MirrorFromSaas(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -1345,7 +1350,7 @@ func (h *RepoHandler) MirrorFromSaas(ctx *gin.Context) { } err = h.c.MirrorFromSaas(ctx.Request.Context(), namespace, name, currentUser, repoType) if err != nil { - slog.Error("Failed to create mirror for", slog.String("repo_type", string(repoType)), slog.String("path", fmt.Sprintf("%s/%s", namespace, name)), "error", err) + slog.ErrorContext(ctx.Request.Context(), "Failed to create mirror for", slog.String("repo_type", string(repoType)), slog.String("path", fmt.Sprintf("%s/%s", namespace, name)), "error", err) httpbase.ServerError(ctx, err) return } @@ -1371,7 +1376,7 @@ func (h *RepoHandler) GetMirror(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -1381,7 +1386,7 @@ func (h *RepoHandler) GetMirror(ctx *gin.Context) { mirrorReq.CurrentUser = currentUser mirror, err := h.c.GetMirror(ctx.Request.Context(), mirrorReq) if err != nil { - slog.Error("Failed to get mirror of", slog.String("repo_type", string(mirrorReq.RepoType)), slog.String("path", fmt.Sprintf("%s/%s", mirrorReq.Namespace, mirrorReq.Name)), "error", err) + slog.ErrorContext(ctx.Request.Context(), "Failed to get mirror of", slog.String("repo_type", string(mirrorReq.RepoType)), slog.String("path", fmt.Sprintf("%s/%s", mirrorReq.Namespace, mirrorReq.Name)), "error", err) httpbase.ServerError(ctx, err) return } @@ -1407,18 +1412,18 @@ func (h *RepoHandler) UpdateMirror(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } if err = ctx.ShouldBindJSON(&mirrorReq); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } sourceRepoPath, err := getSourceRepoPathFromSourceUrl(mirrorReq.SourceUrl) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -1429,7 +1434,7 @@ func (h *RepoHandler) UpdateMirror(ctx *gin.Context) { mirrorReq.CurrentUser = currentUser mirror, err := h.c.UpdateMirror(ctx.Request.Context(), mirrorReq) if err != nil { - slog.Error("Failed to update mirror for", slog.String("repo_type", string(mirrorReq.RepoType)), slog.String("path", fmt.Sprintf("%s/%s", mirrorReq.Namespace, mirrorReq.Name)), "error", err) + slog.ErrorContext(ctx.Request.Context(), "Failed to update mirror for", slog.String("repo_type", string(mirrorReq.RepoType)), slog.String("path", fmt.Sprintf("%s/%s", mirrorReq.Namespace, mirrorReq.Name)), "error", err) httpbase.ServerError(ctx, err) return } @@ -1454,7 +1459,7 @@ func (h *RepoHandler) DeleteMirror(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -1464,7 +1469,7 @@ func (h *RepoHandler) DeleteMirror(ctx *gin.Context) { mirrorReq.CurrentUser = currentUser err = h.c.DeleteMirror(ctx.Request.Context(), mirrorReq) if err != nil { - slog.Error("Failed to delete mirror of", slog.String("repo_type", string(mirrorReq.RepoType)), slog.String("path", fmt.Sprintf("%s/%s", mirrorReq.Namespace, mirrorReq.Name)), "error", err) + slog.ErrorContext(ctx.Request.Context(), "Failed to delete mirror of", slog.String("repo_type", string(mirrorReq.RepoType)), slog.String("path", fmt.Sprintf("%s/%s", mirrorReq.Namespace, mirrorReq.Name)), "error", err) httpbase.ServerError(ctx, err) return } @@ -1490,7 +1495,7 @@ func (h *RepoHandler) DeleteMirror(ctx *gin.Context) { func (h *RepoHandler) RuntimeFrameworkList(ctx *gin.Context) { namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -1501,20 +1506,20 @@ func (h *RepoHandler) RuntimeFrameworkList(ctx *gin.Context) { } deployType, err := strconv.Atoi(deployTypeStr) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } slog.Debug("list runtime framework", slog.Any("namespace", namespace), slog.Any("name", name)) repoType := common.RepoTypeFromContext(ctx) if repoType == types.UnknownRepo { - slog.Error("Bad request of repo type") + slog.ErrorContext(ctx.Request.Context(), "Bad request of repo type") httpbase.BadRequest(ctx, "Bad request of repo type") return } response, err := h.c.ListRuntimeFramework(ctx.Request.Context(), repoType, namespace, name, deployType) if err != nil { - slog.Error("fail to list runtime framework", slog.String("error", err.Error())) + slog.ErrorContext(ctx.Request.Context(), "fail to list runtime framework", slog.String("error", err.Error())) httpbase.ServerError(ctx, err) return } @@ -1541,7 +1546,7 @@ func (h *RepoHandler) RuntimeFrameworkList(ctx *gin.Context) { func (h *RepoHandler) RuntimeFrameworkListV2(ctx *gin.Context) { namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -1552,20 +1557,20 @@ func (h *RepoHandler) RuntimeFrameworkListV2(ctx *gin.Context) { } deployType, err := strconv.Atoi(deployTypeStr) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } slog.Debug("list runtime framework", slog.Any("namespace", namespace), slog.Any("name", name)) repoType := common.RepoTypeFromContext(ctx) if repoType == types.UnknownRepo { - slog.Error("Bad request of repo type") + slog.ErrorContext(ctx.Request.Context(), "Bad request of repo type") httpbase.BadRequest(ctx, "Bad request of repo type") return } response, err := h.c.ListRuntimeFrameworkV2(ctx.Request.Context(), repoType, namespace, name, deployType) if err != nil { - slog.Error("fail to list runtime framework", slog.String("error", err.Error())) + slog.ErrorContext(ctx.Request.Context(), "fail to list runtime framework", slog.String("error", err.Error())) httpbase.ServerError(ctx, err) return } @@ -1593,7 +1598,7 @@ func (h *RepoHandler) RuntimeFrameworkCreate(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) var req types.RuntimeFrameworkReq if err := ctx.ShouldBindJSON(&req); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -1604,7 +1609,7 @@ func (h *RepoHandler) RuntimeFrameworkCreate(ctx *gin.Context) { httpbase.ForbiddenError(ctx, err) return } - slog.Error("Failed to create runtime framework", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to create runtime framework", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -1632,14 +1637,14 @@ func (h *RepoHandler) RuntimeFrameworkUpdate(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) var req types.RuntimeFrameworkReq if err := ctx.ShouldBindJSON(&req); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } req.CurrentUser = currentUser id, err := strconv.ParseInt(ctx.Param("id"), 10, 64) if err != nil { - slog.Error("Bad request url format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request url format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -1650,7 +1655,7 @@ func (h *RepoHandler) RuntimeFrameworkUpdate(ctx *gin.Context) { httpbase.ForbiddenError(ctx, err) return } - slog.Error("Failed to update runtime framework", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to update runtime framework", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -1680,7 +1685,7 @@ func (h *RepoHandler) RuntimeFrameworkDelete(ctx *gin.Context) { ) id, err = strconv.ParseInt(ctx.Param("id"), 10, 64) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -1693,7 +1698,7 @@ func (h *RepoHandler) RuntimeFrameworkDelete(ctx *gin.Context) { httpbase.ForbiddenError(ctx, err) return } - slog.Error("Failed to delete runtime framework", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to delete runtime framework", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -1719,14 +1724,14 @@ func (h *RepoHandler) DeployList(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } repoType := common.RepoTypeFromContext(ctx) response, err := h.c.ListDeploy(ctx.Request.Context(), repoType, namespace, name, currentUser) if err != nil { - slog.Error("fail to list deploy", slog.String("error", err.Error()), slog.Any("repotype", repoType), slog.Any("namespace", namespace), slog.Any("name", name)) + slog.ErrorContext(ctx.Request.Context(), "fail to list deploy", slog.String("error", err.Error()), slog.Any("repotype", repoType), slog.Any("namespace", namespace), slog.Any("name", name)) httpbase.ServerError(ctx, err) return } @@ -1755,14 +1760,14 @@ func (h *RepoHandler) DeployDetail(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } repoType := common.RepoTypeFromContext(ctx) deployID, err := strconv.ParseInt(ctx.Param("id"), 10, 64) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -1788,7 +1793,7 @@ func (h *RepoHandler) DeployDetail(ctx *gin.Context) { } else if errors.Is(err, errorx.ErrDatabaseNoRows) { httpbase.NotFoundError(ctx, err) } else { - slog.Error("failed to get deploy detail", slog.Any("error", err), slog.Any("req", detailReq)) + slog.ErrorContext(ctx.Request.Context(), "failed to get deploy detail", slog.Any("error", err), slog.Any("req", detailReq)) httpbase.ServerError(ctx, err) } return @@ -1821,7 +1826,7 @@ func (h *RepoHandler) DeployInstanceLogs(ctx *gin.Context) { } namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("failed to get namespace and name from context", "error", err) + slog.ErrorContext(ctx.Request.Context(), "failed to get namespace and name from context", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -1830,7 +1835,7 @@ func (h *RepoHandler) DeployInstanceLogs(ctx *gin.Context) { repoType := common.RepoTypeFromContext(ctx) deployID, err := strconv.ParseInt(ctx.Param("id"), 10, 64) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -1864,7 +1869,7 @@ func (h *RepoHandler) DeployInstanceLogs(ctx *gin.Context) { return } - slog.Error("failed to get instance logs", slog.Any("error", err), slog.Any("req", logReq)) + slog.ErrorContext(ctx.Request.Context(), "failed to get instance logs", slog.Any("error", err), slog.Any("req", logReq)) httpbase.ServerError(ctx, err) return } @@ -1959,7 +1964,7 @@ func (h *RepoHandler) DeployStatus(ctx *gin.Context) { namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("failed to get namespace from context", "error", err) + slog.ErrorContext(ctx.Request.Context(), "failed to get namespace from context", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -1967,7 +1972,7 @@ func (h *RepoHandler) DeployStatus(ctx *gin.Context) { repoType := common.RepoTypeFromContext(ctx) deployID, err := strconv.ParseInt(ctx.Param("id"), 10, 64) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -1990,13 +1995,13 @@ func (h *RepoHandler) DeployStatus(ctx *gin.Context) { return } - slog.Error("failed to get deploy status", "error", err, "req", statusReq) + slog.ErrorContext(ctx.Request.Context(), "failed to get deploy status", "error", err, "req", statusReq) httpbase.ServerError(ctx, err) return } if !allow { - slog.Error("not allowed to query deploy status", "req", statusReq) + slog.ErrorContext(ctx.Request.Context(), "not allowed to query deploy status", "req", statusReq) httpbase.ForbiddenError(ctx, err) return } @@ -2019,7 +2024,7 @@ func (h *RepoHandler) DeployStatus(ctx *gin.Context) { // user http request context instead of gin context, so that server knows the life cycle of the request status, err := h.c.DeployStatus(ctx.Request.Context(), repoType, namespace, name, deployID) if err != nil { - slog.Error("failed to get deploy status", slog.Any("error", err), slog.String("namespace", namespace), + slog.ErrorContext(ctx.Request.Context(), "failed to get deploy status", slog.Any("error", err), slog.String("namespace", namespace), slog.String("name", name), slog.Any("deploy_id", deployID)) ctx.SSEvent("error", err.Error()) } else { @@ -2048,7 +2053,7 @@ func (h *RepoHandler) SyncMirror(ctx *gin.Context) { repoType := common.RepoTypeFromContext(ctx) namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("failed to get namespace from context", "error", err) + slog.ErrorContext(ctx.Request.Context(), "failed to get namespace from context", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -2056,12 +2061,12 @@ func (h *RepoHandler) SyncMirror(ctx *gin.Context) { err = h.c.SyncMirror(ctx.Request.Context(), repoType, namespace, name, currentUser) if err != nil { if errors.Is(err, errorx.ErrForbidden) { - slog.Error("not allowed to sync mirror", slog.Any("error", err), slog.String("repo_type", string(repoType)), slog.String("path", fmt.Sprintf("%s/%s", namespace, name))) + slog.ErrorContext(ctx.Request.Context(), "not allowed to sync mirror", slog.Any("error", err), slog.String("repo_type", string(repoType)), slog.String("path", fmt.Sprintf("%s/%s", namespace, name))) httpbase.ForbiddenError(ctx, err) return } - slog.Error("Failed to sync mirror for", slog.String("repo_type", string(repoType)), slog.String("path", fmt.Sprintf("%s/%s", namespace, name)), "error", err) + slog.ErrorContext(ctx.Request.Context(), "Failed to sync mirror for", slog.String("repo_type", string(repoType)), slog.String("path", fmt.Sprintf("%s/%s", namespace, name)), "error", err) httpbase.ServerError(ctx, err) return } @@ -2085,7 +2090,7 @@ func (h *RepoHandler) MirrorProgress(ctx *gin.Context) { repoType := common.RepoTypeFromContext(ctx) namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("failed to get namespace from context", "error", err) + slog.ErrorContext(ctx.Request.Context(), "failed to get namespace from context", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -2098,7 +2103,7 @@ func (h *RepoHandler) MirrorProgress(ctx *gin.Context) { return } - slog.Error("Failed to get mirror progress for", slog.String("repo_type", string(repoType)), slog.String("path", fmt.Sprintf("%s/%s", namespace, name)), "error", err) + slog.ErrorContext(ctx.Request.Context(), "Failed to get mirror progress for", slog.String("repo_type", string(repoType)), slog.String("path", fmt.Sprintf("%s/%s", namespace, name)), "error", err) httpbase.ServerError(ctx, err) return } @@ -2157,14 +2162,14 @@ func (h *RepoHandler) DeployUpdate(ctx *gin.Context) { namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("failed to get namespace and name from context", "error", err) + slog.ErrorContext(ctx.Request.Context(), "failed to get namespace and name from context", "error", err) httpbase.BadRequest(ctx, err.Error()) return } allow, err := h.c.AllowReadAccess(ctx.Request.Context(), types.ModelRepo, namespace, name, currentUser) if err != nil { - slog.Error("failed to check user permission", "error", err, slog.Any("currentUser", currentUser), slog.Any("namespace", name), slog.Any("name", name)) + slog.ErrorContext(ctx.Request.Context(), "failed to check user permission", "error", err, slog.Any("currentUser", currentUser), slog.Any("namespace", name), slog.Any("name", name)) httpbase.ServerError(ctx, errors.New("failed to check user permission")) return } @@ -2178,7 +2183,7 @@ func (h *RepoHandler) DeployUpdate(ctx *gin.Context) { var req *types.DeployUpdateReq if err := ctx.ShouldBindJSON(&req); err != nil { - slog.Error("Bad request format", "error", err, slog.Any("request.body", ctx.Request.Body)) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err, slog.Any("request.body", ctx.Request.Body)) httpbase.BadRequest(ctx, err.Error()) return } @@ -2186,7 +2191,7 @@ func (h *RepoHandler) DeployUpdate(ctx *gin.Context) { if req.MinReplica != nil && req.MaxReplica != nil { err = Validate.Struct(req) if err != nil { - slog.Error("Bad request setting for deploy", slog.Any("req", *req), slog.Any("err", err)) + slog.ErrorContext(ctx.Request.Context(), "Bad request setting for deploy", slog.Any("req", *req), slog.Any("err", err)) httpbase.BadRequest(ctx, fmt.Sprintf("Bad request setting for deploy, %v", err)) return } @@ -2195,7 +2200,7 @@ func (h *RepoHandler) DeployUpdate(ctx *gin.Context) { repoType := common.RepoTypeFromContext(ctx) deployID, err := strconv.ParseInt(ctx.Param("id"), 10, 64) if err != nil { - slog.Error("Bad request format", slog.Any("error", err), slog.Any("id", ctx.Param("id"))) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", slog.Any("error", err), slog.Any("id", ctx.Param("id"))) httpbase.BadRequest(ctx, err.Error()) return } @@ -2210,12 +2215,12 @@ func (h *RepoHandler) DeployUpdate(ctx *gin.Context) { err = h.c.DeployUpdate(ctx.Request.Context(), updateReq, req) if err != nil { if errors.Is(err, errorx.ErrForbidden) { - slog.Error("user not allowed to update deploy", slog.String("namespace", namespace), + slog.ErrorContext(ctx.Request.Context(), "user not allowed to update deploy", slog.String("namespace", namespace), slog.String("name", name), slog.Any("username", currentUser), slog.Int64("deploy_id", deployID)) httpbase.ForbiddenError(ctx, err) return } - slog.Error("failed to update deploy", slog.String("namespace", namespace), slog.String("name", name), slog.Any("username", currentUser), slog.Int64("deploy_id", deployID), slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "failed to update deploy", slog.String("namespace", namespace), slog.String("name", name), slog.Any("username", currentUser), slog.Int64("deploy_id", deployID), slog.Any("error", err)) httpbase.ServerError(ctx, fmt.Errorf("failed to update deploy, %w", err)) return } @@ -2247,20 +2252,20 @@ func (h *RepoHandler) RuntimeFrameworkListWithType(ctx *gin.Context) { } deployType, err := strconv.Atoi(deployTypeStr) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } repoType := common.RepoTypeFromContext(ctx) if repoType == types.UnknownRepo { - slog.Error("Bad request of repo type") + slog.ErrorContext(ctx.Request.Context(), "Bad request of repo type") httpbase.BadRequest(ctx, "Bad request of repo type") return } response, err := h.c.ListRuntimeFrameworkWithType(ctx.Request.Context(), deployType) if err != nil { - slog.Error("fail to list runtime framework", slog.String("error", err.Error())) + slog.ErrorContext(ctx.Request.Context(), "fail to list runtime framework", slog.String("error", err.Error())) httpbase.ServerError(ctx, err) return } @@ -2287,13 +2292,13 @@ func (h *RepoHandler) ServerlessDetail(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } deployID, err := strconv.ParseInt(ctx.Param("id"), 10, 64) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -2310,13 +2315,13 @@ func (h *RepoHandler) ServerlessDetail(ctx *gin.Context) { response, err := h.c.DeployDetail(ctx.Request.Context(), detailReq) if err != nil { if errors.Is(err, errorx.ErrForbidden) { - slog.Error("user not allowed to get serverless deploy detail", slog.String("namespace", namespace), + slog.ErrorContext(ctx.Request.Context(), "user not allowed to get serverless deploy detail", slog.String("namespace", namespace), slog.String("name", name), slog.Any("username", currentUser), slog.Int64("deploy_id", deployID)) httpbase.ForbiddenError(ctx, err) } else if errors.Is(err, errorx.ErrDatabaseNoRows) { httpbase.NotFoundError(ctx, err) } else { - slog.Error("fail to get serverless deploy detail", slog.String("error", err.Error()), slog.Any("namespace", namespace), slog.Any("name", name), slog.Any("deploy id", deployID)) + slog.ErrorContext(ctx.Request.Context(), "fail to get serverless deploy detail", slog.String("error", err.Error()), slog.Any("namespace", namespace), slog.Any("name", name), slog.Any("deploy id", deployID)) httpbase.ServerError(ctx, err) } return @@ -2346,9 +2351,10 @@ func (h *RepoHandler) ServerlessLogs(ctx *gin.Context) { h.testLogs(ctx) return } + namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("failed to get namespace and name from context", "error", err) + slog.ErrorContext(ctx.Request.Context(), "failed to get namespace and name from context", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -2357,7 +2363,7 @@ func (h *RepoHandler) ServerlessLogs(ctx *gin.Context) { repoType := common.RepoTypeFromContext(ctx) deployID, err := strconv.ParseInt(ctx.Param("id"), 10, 64) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -2386,12 +2392,12 @@ func (h *RepoHandler) ServerlessLogs(ctx *gin.Context) { logReader, err := h.c.DeployInstanceLogs(ctx.Request.Context(), logReq) if err != nil { if errors.Is(err, errorx.ErrForbidden) { - slog.Error("user not allowed to get serverless deploy logs", slog.Any("logReq", logReq), slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "user not allowed to get serverless deploy logs", slog.Any("logReq", logReq), slog.Any("error", err)) httpbase.ForbiddenError(ctx, err) return } - slog.Error("Failed to get serverless deploy logs", slog.Any("logReq", logReq), slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get serverless deploy logs", slog.Any("logReq", logReq), slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -2451,14 +2457,14 @@ func (h *RepoHandler) ServerlessStatus(ctx *gin.Context) { namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("failed to get namespace from context", "error", err) + slog.ErrorContext(ctx.Request.Context(), "failed to get namespace from context", "error", err) httpbase.BadRequest(ctx, err.Error()) return } deployID, err := strconv.ParseInt(ctx.Param("id"), 10, 64) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -2475,12 +2481,12 @@ func (h *RepoHandler) ServerlessStatus(ctx *gin.Context) { allow, err := h.c.AllowAccessDeploy(ctx.Request.Context(), statusReq) if err != nil { if errors.Is(err, errorx.ErrForbidden) { - slog.Error("user not allowed to get serverless deploy status", slog.Any("error", err), slog.Any("req", statusReq)) + slog.ErrorContext(ctx.Request.Context(), "user not allowed to get serverless deploy status", slog.Any("error", err), slog.Any("req", statusReq)) httpbase.ForbiddenError(ctx, err) return } - slog.Error("failed to check user permission", slog.Any("error", err), slog.Any("req", statusReq)) + slog.ErrorContext(ctx.Request.Context(), "failed to check user permission", slog.Any("error", err), slog.Any("req", statusReq)) httpbase.ServerError(ctx, fmt.Errorf("failed to check user permission, %w", err)) return } @@ -2509,7 +2515,7 @@ func (h *RepoHandler) ServerlessStatus(ctx *gin.Context) { // user http request context instead of gin context, so that server knows the life cycle of the request status, err := h.c.DeployStatus(ctx.Request.Context(), types.ModelRepo, namespace, name, deployID) if err != nil { - slog.Error("failed to get deploy status", slog.Any("error", err), slog.String("namespace", namespace), + slog.ErrorContext(ctx.Request.Context(), "failed to get deploy status", slog.Any("error", err), slog.String("namespace", namespace), slog.String("name", name), slog.Any("deploy_id", deployID)) ctx.SSEvent("error", err.Error()) } else { @@ -2541,14 +2547,14 @@ func (h *RepoHandler) ServerlessUpdate(ctx *gin.Context) { namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("failed to get namespace and name from context", "error", err) + slog.ErrorContext(ctx.Request.Context(), "failed to get namespace and name from context", "error", err) httpbase.BadRequest(ctx, err.Error()) return } var req *types.DeployUpdateReq if err := ctx.ShouldBindJSON(&req); err != nil { - slog.Error("Bad request format", "error", err, slog.Any("request.body", ctx.Request.Body)) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err, slog.Any("request.body", ctx.Request.Body)) httpbase.BadRequest(ctx, err.Error()) return } @@ -2556,7 +2562,7 @@ func (h *RepoHandler) ServerlessUpdate(ctx *gin.Context) { if req.MinReplica != nil && req.MaxReplica != nil { err = Validate.Struct(req) if err != nil { - slog.Error("Bad request setting for serverless", slog.Any("req", *req), slog.Any("err", err)) + slog.ErrorContext(ctx.Request.Context(), "Bad request setting for serverless", slog.Any("req", *req), slog.Any("err", err)) httpbase.BadRequest(ctx, fmt.Sprintf("Bad request setting for serverless, %v", err)) return } @@ -2564,7 +2570,7 @@ func (h *RepoHandler) ServerlessUpdate(ctx *gin.Context) { deployID, err := strconv.ParseInt(ctx.Param("id"), 10, 64) if err != nil { - slog.Error("Bad request format", slog.Any("error", err), slog.Any("id", ctx.Param("id"))) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", slog.Any("error", err), slog.Any("id", ctx.Param("id"))) httpbase.BadRequest(ctx, err.Error()) return } @@ -2584,7 +2590,7 @@ func (h *RepoHandler) ServerlessUpdate(ctx *gin.Context) { return } - slog.Error("failed to update serverless", slog.Any("error", err), slog.Any("req", updateReq)) + slog.ErrorContext(ctx.Request.Context(), "failed to update serverless", slog.Any("error", err), slog.Any("req", updateReq)) httpbase.ServerError(ctx, fmt.Errorf("failed to update serverless, %w", err)) return } @@ -2612,7 +2618,7 @@ func (h *RepoHandler) ServerlessUpdate(ctx *gin.Context) { func (h *RepoHandler) RemoteTree(ctx *gin.Context) { namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -2633,7 +2639,7 @@ func (h *RepoHandler) RemoteTree(ctx *gin.Context) { httpbase.ForbiddenError(ctx, err) return } - slog.Error( + slog.ErrorContext(ctx.Request.Context(), "Failed to get remote tree", slog.String("repo_type", string(req.RepoType)), slog.Any("error", err), slog.Any("req", req), ) @@ -2663,7 +2669,7 @@ func (h *RepoHandler) RemoteTree(ctx *gin.Context) { func (h *RepoHandler) DiffBetweenTwoCommits(ctx *gin.Context) { namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -2685,7 +2691,7 @@ func (h *RepoHandler) DiffBetweenTwoCommits(ctx *gin.Context) { } diff, err := h.c.DiffBetweenTwoCommits(ctx.Request.Context(), req) if err != nil { - slog.Error( + slog.ErrorContext(ctx.Request.Context(), "Failed to get repo diff between two commits", slog.String("repo_type", string(req.RepoType)), slog.Any("error", err)) @@ -2717,7 +2723,7 @@ func (h *RepoHandler) DiffBetweenTwoCommits(ctx *gin.Context) { func (h *RepoHandler) AllFiles(ctx *gin.Context) { namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -2735,7 +2741,7 @@ func (h *RepoHandler) AllFiles(ctx *gin.Context) { httpbase.ForbiddenError(ctx, err) return } - slog.Error("Failed to get repo all files", slog.Any("error", err), slog.Any("req", req)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get repo all files", slog.Any("error", err), slog.Any("req", req)) httpbase.ServerError(ctx, err) return } @@ -2761,7 +2767,7 @@ func (h *RepoHandler) AllFiles(ctx *gin.Context) { func (h *RepoHandler) RemoteDiff(ctx *gin.Context) { namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -2782,7 +2788,7 @@ func (h *RepoHandler) RemoteDiff(ctx *gin.Context) { } diff, err := h.c.RemoteDiff(ctx.Request.Context(), req) if err != nil { - slog.Error( + slog.ErrorContext(ctx.Request.Context(), "Failed to get repo remote diff", slog.String("repo_type", string(req.RepoType)), slog.Any("error", err)) @@ -2862,7 +2868,7 @@ func (h *RepoHandler) PreuploadHF(ctx *gin.Context) { resp, err := h.c.Preupload(ctx.Request.Context(), req) if err != nil { - slog.Error("failed to preupload", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "failed to preupload", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -2889,7 +2895,7 @@ func (h *RepoHandler) PreuploadHF(ctx *gin.Context) { func (h *RepoHandler) CommitFiles(ctx *gin.Context) { var req types.CommitFilesReq if err := ctx.ShouldBindJSON(&req); err != nil { - slog.Error("invalid request body", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "invalid request body", slog.Any("error", err)) httpbase.BadRequest(ctx, err.Error()) return } @@ -2898,7 +2904,7 @@ func (h *RepoHandler) CommitFiles(ctx *gin.Context) { namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("invalid request body", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "invalid request body", slog.Any("error", err)) httpbase.BadRequest(ctx, err.Error()) } req.Namespace = namespace @@ -2909,7 +2915,7 @@ func (h *RepoHandler) CommitFiles(ctx *gin.Context) { err = h.c.CommitFiles(ctx.Request.Context(), req) if err != nil { - slog.Error("failed to commit files", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "failed to commit files", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -2919,7 +2925,7 @@ func (h *RepoHandler) CommitFiles(ctx *gin.Context) { func (h *RepoHandler) CommitFilesHF(ctx *gin.Context) { req, err := h.c.ParseNDJson(ctx) if err != nil { - slog.Error("invalid request body", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "invalid request body", slog.Any("error", err)) httpbase.BadRequest(ctx, err.Error()) return } @@ -2927,7 +2933,7 @@ func (h *RepoHandler) CommitFilesHF(ctx *gin.Context) { namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("invalid request body", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "invalid request body", slog.Any("error", err)) httpbase.BadRequest(ctx, err.Error()) } req.Namespace = namespace @@ -2941,7 +2947,7 @@ func (h *RepoHandler) CommitFilesHF(ctx *gin.Context) { err = h.c.CommitFiles(ctx.Request.Context(), *req) if err != nil { - slog.Error("failed to commit files", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "failed to commit files", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -2972,21 +2978,21 @@ func (h *RepoHandler) ChangePath(ctx *gin.Context) { err error ) if err := ctx.ShouldBindJSON(&req); err != nil { - slog.Error("invalid request body", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "invalid request body", slog.Any("error", err)) httpbase.BadRequest(ctx, err.Error()) return } req.RepoType, err = common.RepoTypeFromString(ctx.Param("repo_type")) if err != nil { - slog.Error("invalid repo type", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "invalid repo type", slog.Any("error", err)) httpbase.BadRequest(ctx, err.Error()) return } err = validator.ValidateRepoPath(req.NewPath) if err != nil { - slog.Error("invalid new path", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "invalid new path", slog.Any("error", err)) httpbase.BadRequest(ctx, err.Error()) return } @@ -2995,7 +3001,7 @@ func (h *RepoHandler) ChangePath(ctx *gin.Context) { namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("invalid request body", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "invalid request body", slog.Any("error", err)) httpbase.BadRequest(ctx, err.Error()) } req.Namespace = namespace @@ -3005,11 +3011,11 @@ func (h *RepoHandler) ChangePath(ctx *gin.Context) { err = h.c.ChangePath(ctx.Request.Context(), req) if err != nil { if errors.Is(err, errorx.ErrBadRequest) { - slog.Error("invalid request", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "invalid request", slog.Any("error", err)) httpbase.BadRequest(ctx, err.Error()) return } - slog.Error("failed to commit files", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "failed to commit files", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -3028,7 +3034,7 @@ func (h *RepoHandler) ChangePath(ctx *gin.Context) { // @Success 200 {object} types.Response{data=[]string} "OK" // @Failure 400 {object} types.APIBadRequest "Bad request" // @Failure 500 {object} types.APIInternalServerError "Internal server error" -// @Router /repos [get] +// @Router /admin/repos [get] func (h *RepoHandler) GetRepos(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) search := ctx.Query("search") @@ -3041,7 +3047,7 @@ func (h *RepoHandler) GetRepos(ctx *gin.Context) { repos, err := h.c.GetRepos(ctx.Request.Context(), search, currentUser, repoType) if err != nil { - slog.Error( + slog.ErrorContext(ctx.Request.Context(), "Failed to get repos", slog.Any("error", err)) httpbase.ServerError(ctx, err) diff --git a/api/handler/rproxy.go b/api/handler/rproxy.go index 758aa8156..62c365ae2 100644 --- a/api/handler/rproxy.go +++ b/api/handler/rproxy.go @@ -68,7 +68,7 @@ func (r *RProxyHandler) Proxy(ctx *gin.Context) { deploy, err := r.repoComp.GetDeployBySvcName(ctx.Request.Context(), appSvcName) if err != nil { - slog.Error("failed to get deploy in rproxy", slog.Any("error", err), slog.Any("appSrvName", appSvcName), slog.Any("request", ctx.Request.URL), slog.Any("header", ctx.Request.Header)) + slog.ErrorContext(ctx.Request.Context(), "failed to get deploy in rproxy", slog.Any("error", err), slog.Any("appSrvName", appSvcName), slog.Any("request", ctx.Request.URL), slog.Any("header", ctx.Request.Header)) httpbase.ServerError(ctx, fmt.Errorf("failed to get deploy, %w", err)) return } @@ -81,7 +81,7 @@ func (r *RProxyHandler) Proxy(ctx *gin.Context) { return } - slog.Error("failed to check user permission", "error", err) + slog.ErrorContext(ctx.Request.Context(), "failed to check user permission", "error", err) httpbase.ServerError(ctx, fmt.Errorf("failed to check user permission,%w", err)) return } @@ -90,7 +90,7 @@ func (r *RProxyHandler) Proxy(ctx *gin.Context) { apiname := ctx.Param("api") target, host, err := r.getSvcTargetAddress(ctx.Request.Context(), appSvcName, deploy) if err != nil { - slog.Error("failed to get svc target address", slog.Any("error", err), slog.Any("appSvcName", appSvcName), slog.Any("request", ctx.Request.URL), slog.Any("header", ctx.Request.Header)) + slog.ErrorContext(ctx.Request.Context(), "failed to get svc target address", slog.Any("error", err), slog.Any("appSvcName", appSvcName), slog.Any("request", ctx.Request.URL), slog.Any("header", ctx.Request.Header)) httpbase.ServerError(ctx, fmt.Errorf("failed to forward request for svc %s, %w", appSvcName, err)) return } @@ -118,12 +118,12 @@ func (r *RProxyHandler) checkAccessPermission(ctx *gin.Context, deploy *database if deploy.SpaceID > 0 { space, err = r.spaceComp.GetByID(ctx.Request.Context(), deploy.SpaceID) if err != nil { - slog.Error("failed to get space by id", slog.Any("spaceID", deploy.SpaceID), slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "failed to get space by id", slog.Any("spaceID", deploy.SpaceID), slog.Any("error", err)) return false, fmt.Errorf("failed to get space, %w", err) } // user must login to visit space except mcp server if space.Sdk != types.MCPSERVER.Name && httpbase.GetAuthType(ctx) != httpbase.AuthTypeJwt { - slog.Error("invalid auth type in proxy", slog.Any("AuthType(ctx)", httpbase.GetAuthType(ctx)), slog.Any("URI", ctx.Request.RequestURI)) + slog.ErrorContext(ctx.Request.Context(), "invalid auth type in proxy", slog.Any("AuthType(ctx)", httpbase.GetAuthType(ctx)), slog.Any("URI", ctx.Request.RequestURI)) return false, ErrUnauthorized } // check space diff --git a/api/handler/runtime_architecture.go b/api/handler/runtime_architecture.go index 64fab7a6c..cd93eb478 100644 --- a/api/handler/runtime_architecture.go +++ b/api/handler/runtime_architecture.go @@ -63,13 +63,13 @@ func (r *RuntimeArchitectureHandler) ListByRuntimeFrameworkID(ctx *gin.Context) strID := ctx.Param("id") id, err := strconv.ParseInt(strID, 10, 64) if err != nil { - slog.Error("invalid runtime framework ID", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "invalid runtime framework ID", slog.Any("error", err)) httpbase.BadRequest(ctx, "invalid runtime framework ID format") return } resp, err := r.runtimeArch.ListByRuntimeFrameworkID(ctx.Request.Context(), id) if err != nil { - slog.Error("fail to list runtime architectures", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "fail to list runtime architectures", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -92,21 +92,21 @@ func (r *RuntimeArchitectureHandler) ListByRuntimeFrameworkID(ctx *gin.Context) func (r *RuntimeArchitectureHandler) UpdateArchitecture(ctx *gin.Context) { var req types.RuntimeArchitecture if err := ctx.ShouldBindJSON(&req); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } id, err := strconv.ParseInt(ctx.Param("id"), 10, 64) if err != nil { - slog.Error("Bad request runtime framework id format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request runtime framework id format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } res, err := r.runtimeArch.SetArchitectures(ctx.Request.Context(), id, req.Architectures) if err != nil { - slog.Error("Failed to set architectures", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to set architectures", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -130,21 +130,21 @@ func (r *RuntimeArchitectureHandler) UpdateArchitecture(ctx *gin.Context) { func (r *RuntimeArchitectureHandler) DeleteArchitecture(ctx *gin.Context) { var req types.RuntimeArchitecture if err := ctx.ShouldBindJSON(&req); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } id, err := strconv.ParseInt(ctx.Param("id"), 10, 64) if err != nil { - slog.Error("Bad request runtime framework id format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request runtime framework id format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } list, err := r.runtimeArch.DeleteArchitectures(ctx.Request.Context(), id, req.Architectures) if err != nil { - slog.Error("Failed to delete architectures", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to delete architectures", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -168,13 +168,13 @@ func (r *RuntimeArchitectureHandler) ScanArchitecture(ctx *gin.Context) { scanTypeStr := ctx.Query("scan_type") if scanTypeStr == "" { - slog.Error("Bad request scan type") + slog.ErrorContext(ctx.Request.Context(), "Bad request scan type") httpbase.BadRequest(ctx, "bad request scan type") return } scanType, err := strconv.Atoi(scanTypeStr) if err != nil { - slog.Error("Bad request scan format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request scan format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -190,7 +190,7 @@ func (r *RuntimeArchitectureHandler) ScanArchitecture(ctx *gin.Context) { ctx.Request.Context(), workflowOptions, workflow.RuntimeFrameworkWorkflow, req, ) if err != nil { - slog.Error("Failed to scan architecture", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to scan architecture", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -213,7 +213,7 @@ func (r *RuntimeArchitectureHandler) ScanArchForSingleModel(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -223,7 +223,7 @@ func (r *RuntimeArchitectureHandler) ScanArchForSingleModel(ctx *gin.Context) { httpbase.ForbiddenError(ctx, err) return } - slog.Error("Failed to scan architecture for model", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to scan architecture for model", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } diff --git a/api/handler/sensitive.go b/api/handler/sensitive.go index 41e8dd001..bd637d4b4 100644 --- a/api/handler/sensitive.go +++ b/api/handler/sensitive.go @@ -34,7 +34,7 @@ func (h *SensitiveHandler) Text(ctx *gin.Context) { err error ) if err = ctx.ShouldBindJSON(&r); err != nil { - slog.Error("Bad request format", slog.String("err", err.Error())) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", slog.String("err", err.Error())) httpbase.BadRequest(ctx, err.Error()) return } @@ -63,7 +63,7 @@ func (h *SensitiveHandler) Image(ctx *gin.Context) { err error ) if err = ctx.ShouldBindJSON(&r); err != nil { - slog.Error("Bad request format", slog.String("err", err.Error())) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", slog.String("err", err.Error())) httpbase.BadRequest(ctx, err.Error()) return } diff --git a/api/handler/space.go b/api/handler/space.go index bb271d47a..252d00aae 100644 --- a/api/handler/space.go +++ b/api/handler/space.go @@ -75,7 +75,7 @@ func (h *SpaceHandler) Index(ctx *gin.Context) { repoFilter.Username = httpbase.GetCurrentUser(ctx) per, page, err := common.GetPerAndPageFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -87,7 +87,7 @@ func (h *SpaceHandler) Index(ctx *gin.Context) { Set("param", "sort"). Set("provided", repoFilter.Sort). Set("allowed", types.Sorts)) - slog.Error("Bad request format,", slog.String("error", msg)) + slog.ErrorContext(ctx.Request.Context(), "Bad request format,", slog.String("error", msg)) httpbase.BadRequestWithExt(ctx, err) return } @@ -98,7 +98,7 @@ func (h *SpaceHandler) Index(ctx *gin.Context) { Set("param", "source"). Set("provided", repoFilter.Source). Set("allowed", types.Sources)) - slog.Error("Bad request format,", slog.String("error", msg)) + slog.ErrorContext(ctx.Request.Context(), "Bad request format,", slog.String("error", msg)) httpbase.BadRequestWithExt(ctx, err) return } @@ -110,7 +110,7 @@ func (h *SpaceHandler) Index(ctx *gin.Context) { } spaces, total, err := h.space.Index(ctx.Request.Context(), repoFilter, per, page, needOpWeight) if err != nil { - slog.Error("Failed to get spaces", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get spaces", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -152,7 +152,7 @@ func (h *SpaceHandler) Show(ctx *gin.Context) { httpbase.UnauthorizedError(ctx, err) return } - slog.Error("Failed to get space detail", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get space detail", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -177,7 +177,7 @@ func (h *SpaceHandler) Create(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) var req types.CreateSpaceReq if err := ctx.ShouldBindJSON(&req); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -188,7 +188,7 @@ func (h *SpaceHandler) Create(ctx *gin.Context) { _, err := h.sensitive.CheckRequestV2(ctx.Request.Context(), &req) if err != nil { - slog.Error("failed to check sensitive request", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "failed to check sensitive request", slog.Any("error", err)) httpbase.BadRequest(ctx, fmt.Errorf("sensitive check failed: %w", err).Error()) return } @@ -200,7 +200,7 @@ func (h *SpaceHandler) Create(ctx *gin.Context) { } else if errors.Is(err, errorx.ErrDatabaseDuplicateKey) { httpbase.BadRequestWithExt(ctx, err) } else { - slog.Error("Failed to create space", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to create space", slog.Any("error", err)) httpbase.ServerError(ctx, err) } return @@ -227,13 +227,13 @@ func (h *SpaceHandler) Update(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) var req *types.UpdateSpaceReq if err := ctx.ShouldBindJSON(&req); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } _, err := h.sensitive.CheckRequestV2(ctx.Request.Context(), req) if err != nil { - slog.Error("failed to check sensitive request", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "failed to check sensitive request", slog.Any("error", err)) httpbase.BadRequest(ctx, fmt.Errorf("sensitive check failed: %w", err).Error()) return } @@ -241,7 +241,7 @@ func (h *SpaceHandler) Update(ctx *gin.Context) { namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -250,7 +250,7 @@ func (h *SpaceHandler) Update(ctx *gin.Context) { space, err := h.space.Update(ctx.Request.Context(), req) if err != nil { - slog.Error("Failed to update space", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to update space", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -277,13 +277,13 @@ func (h *SpaceHandler) Delete(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } err = h.space.Delete(ctx.Request.Context(), namespace, name, currentUser) if err != nil { - slog.Error("Failed to delete space", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to delete space", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -308,13 +308,13 @@ func (h *SpaceHandler) Run(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("failed to get namespace from context", "error", err) + slog.ErrorContext(ctx.Request.Context(), "failed to get namespace from context", "error", err) httpbase.BadRequest(ctx, err.Error()) return } allow, err := h.repo.AllowAdminAccess(ctx.Request.Context(), types.SpaceRepo, namespace, name, currentUser) if err != nil { - slog.Error("failed to check user permission", "error", err) + slog.ErrorContext(ctx.Request.Context(), "failed to check user permission", "error", err) httpbase.ServerError(ctx, errors.New("failed to check user permission")) return } @@ -326,7 +326,7 @@ func (h *SpaceHandler) Run(ctx *gin.Context) { } deployID, err := h.space.Deploy(ctx.Request.Context(), namespace, name, currentUser) if err != nil { - slog.Error("failed to deploy space", slog.String("namespace", namespace), + slog.ErrorContext(ctx.Request.Context(), "failed to deploy space", slog.String("namespace", namespace), slog.String("name", name), slog.Any("error", err)) if errors.Is(err, errorx.ErrNoEntryFile) { httpbase.BadRequestWithExt(ctx, err) @@ -355,13 +355,13 @@ func (h *SpaceHandler) Run(ctx *gin.Context) { func (h *SpaceHandler) Wakeup(ctx *gin.Context) { namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("failed to get namespace from context", "error", err) + slog.ErrorContext(ctx.Request.Context(), "failed to get namespace from context", "error", err) httpbase.BadRequest(ctx, err.Error()) return } err = h.space.Wakeup(ctx.Request.Context(), namespace, name) if err != nil { - slog.Error("failed to wakeup space", slog.String("namespace", namespace), + slog.ErrorContext(ctx.Request.Context(), "failed to wakeup space", slog.String("namespace", namespace), slog.String("name", name), slog.Any("error", err)) if errors.Is(err, sql.ErrNoRows) { httpbase.NotFoundError(ctx, err) @@ -392,13 +392,13 @@ func (h *SpaceHandler) Stop(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("failed to get namespace from context", "error", err) + slog.ErrorContext(ctx.Request.Context(), "failed to get namespace from context", "error", err) httpbase.BadRequest(ctx, err.Error()) return } allow, err := h.repo.AllowAdminAccess(ctx.Request.Context(), types.SpaceRepo, namespace, name, currentUser) if err != nil { - slog.Error("failed to check user permission", "error", err) + slog.ErrorContext(ctx.Request.Context(), "failed to check user permission", "error", err) httpbase.ServerError(ctx, errors.New("failed to check user permission")) return } @@ -411,7 +411,7 @@ func (h *SpaceHandler) Stop(ctx *gin.Context) { err = h.space.Stop(ctx.Request.Context(), namespace, name, false) if err != nil { - slog.Error("failed to stop space", slog.String("namespace", namespace), + slog.ErrorContext(ctx.Request.Context(), "failed to stop space", slog.String("namespace", namespace), slog.String("name", name), slog.Any("error", err)) if errors.Is(err, sql.ErrNoRows) { httpbase.NotFoundError(ctx, err) @@ -448,7 +448,7 @@ func (h *SpaceHandler) Status(ctx *gin.Context) { namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("failed to get namespace from context", "error", err) + slog.ErrorContext(ctx.Request.Context(), "failed to get namespace from context", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -456,7 +456,7 @@ func (h *SpaceHandler) Status(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) allow, err := h.repo.AllowReadAccess(ctx.Request.Context(), types.SpaceRepo, namespace, name, currentUser) if err != nil { - slog.Error("failed to check user permission", "error", err) + slog.ErrorContext(ctx.Request.Context(), "failed to check user permission", "error", err) httpbase.ServerError(ctx, errors.New("failed to check user permission")) return } @@ -489,11 +489,11 @@ func (h *SpaceHandler) Status(ctx *gin.Context) { _, status, err := h.space.Status(ctx.Request.Context(), namespace, name) if err != nil { if deadline, ok := ctx.Request.Context().Deadline(); ok { - slog.Error("failed to get space status in stream", slog.Any("error", err), + slog.ErrorContext(ctx.Request.Context(), "failed to get space status in stream", slog.Any("error", err), slog.String("namespace", namespace), slog.String("name", name), slog.Any("deadline", time.Until(deadline))) } else { - slog.Error("failed to get space status in stream", slog.Any("error", err), + slog.ErrorContext(ctx.Request.Context(), "failed to get space status in stream", slog.Any("error", err), slog.String("namespace", namespace), slog.String("name", name)) } ctx.SSEvent("error", err.Error()) @@ -557,7 +557,7 @@ func (h *SpaceHandler) Logs(ctx *gin.Context) { since := ctx.Query("since") namespace, name, err := common.GetNamespaceAndNameFromContext(ctx) if err != nil { - slog.Error("failed to get namespace from context", "error", err) + slog.ErrorContext(ctx.Request.Context(), "failed to get namespace from context", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -565,7 +565,7 @@ func (h *SpaceHandler) Logs(ctx *gin.Context) { currentUser := httpbase.GetCurrentUser(ctx) allow, err := h.repo.AllowReadAccess(ctx.Request.Context(), types.SpaceRepo, namespace, name, currentUser) if err != nil { - slog.Error("failed to check user permission", "error", err) + slog.ErrorContext(ctx.Request.Context(), "failed to check user permission", "error", err) httpbase.ServerError(ctx, errors.New("failed to check user permission")) return } @@ -586,13 +586,13 @@ func (h *SpaceHandler) Logs(ctx *gin.Context) { logReader, err := h.space.Logs(ctx.Request.Context(), namespace, name, since) if err != nil { if deadline, ok := ctx.Request.Context().Deadline(); ok { - slog.Error("failed to get space logs", + slog.ErrorContext(ctx.Request.Context(), "failed to get space logs", slog.Any("error", err), slog.String("namespace", namespace), slog.String("name", name), slog.Any("deadline", time.Until(deadline)), slog.Bool("ok", ok), ) } else { - slog.Error("failed to get space logs", + slog.ErrorContext(ctx.Request.Context(), "failed to get space logs", slog.Any("error", err), slog.String("namespace", namespace), slog.String("name", name), ) diff --git a/api/handler/space_resource.go b/api/handler/space_resource.go index 2ce3db48f..25a6cfe7b 100644 --- a/api/handler/space_resource.go +++ b/api/handler/space_resource.go @@ -50,13 +50,13 @@ func (h *SpaceResourceHandler) Index(ctx *gin.Context) { } deployType, err := strconv.Atoi(deployTypeStr) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } per, page, err := common.GetPerAndPageFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -72,7 +72,7 @@ func (h *SpaceResourceHandler) Index(ctx *gin.Context) { } spaceResources, total, err := h.spaceResource.Index(ctx.Request.Context(), req) if err != nil { - slog.Error("Failed to get space resources", slog.String("cluster_id", clusterId), slog.String("deploy_type", deployTypeStr), slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get space resources", slog.String("cluster_id", clusterId), slog.String("deploy_type", deployTypeStr), slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -95,13 +95,13 @@ func (h *SpaceResourceHandler) Index(ctx *gin.Context) { func (h *SpaceResourceHandler) Create(ctx *gin.Context) { var req types.CreateSpaceResourceReq if err := ctx.ShouldBindJSON(&req); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } spaceResource, err := h.spaceResource.Create(ctx.Request.Context(), &req) if err != nil { - slog.Error("Failed to create space resources", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to create space resources", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -129,13 +129,13 @@ func (h *SpaceResourceHandler) Update(ctx *gin.Context) { ) var req *types.UpdateSpaceResourceReq if err := ctx.ShouldBindJSON(&req); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } id, err = strconv.ParseInt(ctx.Param("id"), 10, 64) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -143,7 +143,7 @@ func (h *SpaceResourceHandler) Update(ctx *gin.Context) { spaceResource, err := h.spaceResource.Update(ctx.Request.Context(), req) if err != nil { - slog.Error("Failed to update space resource", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to update space resource", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -170,14 +170,14 @@ func (h *SpaceResourceHandler) Delete(ctx *gin.Context) { ) id, err = strconv.ParseInt(ctx.Param("id"), 10, 64) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } err = h.spaceResource.Delete(ctx.Request.Context(), id) if err != nil { - slog.Error("Failed to delete space resource", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to delete space resource", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } diff --git a/api/handler/space_sdk.go b/api/handler/space_sdk.go index d6bd6ec58..a28ddd86e 100644 --- a/api/handler/space_sdk.go +++ b/api/handler/space_sdk.go @@ -39,7 +39,7 @@ type SpaceSdkHandler struct { func (h *SpaceSdkHandler) Index(ctx *gin.Context) { spaceSdks, err := h.c.Index(ctx.Request.Context()) if err != nil { - slog.Error("Failed to get space sdks", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get space sdks", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -62,13 +62,13 @@ func (h *SpaceSdkHandler) Index(ctx *gin.Context) { func (h *SpaceSdkHandler) Create(ctx *gin.Context) { var req types.CreateSpaceSdkReq if err := ctx.ShouldBindJSON(&req); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } spaceSdk, err := h.c.Create(ctx.Request.Context(), &req) if err != nil { - slog.Error("Failed to create space sdk", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to create space sdk", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -96,13 +96,13 @@ func (h *SpaceSdkHandler) Update(ctx *gin.Context) { ) var req types.UpdateSpaceSdkReq if err := ctx.ShouldBindJSON(&req); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } id, err = strconv.ParseInt(ctx.Param("id"), 10, 64) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -110,7 +110,7 @@ func (h *SpaceSdkHandler) Update(ctx *gin.Context) { spaceSdk, err := h.c.Update(ctx.Request.Context(), &req) if err != nil { - slog.Error("Failed to update space sdk", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to update space sdk", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -137,14 +137,14 @@ func (h *SpaceSdkHandler) Delete(ctx *gin.Context) { ) id, err = strconv.ParseInt(ctx.Param("id"), 10, 64) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } err = h.c.Delete(ctx.Request.Context(), id) if err != nil { - slog.Error("Failed to delete space sdk", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to delete space sdk", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } diff --git a/api/handler/space_template.go b/api/handler/space_template.go index 9f9801627..ba4bd8c96 100644 --- a/api/handler/space_template.go +++ b/api/handler/space_template.go @@ -39,7 +39,7 @@ type SpaceTemplateHandler struct { func (h *SpaceTemplateHandler) Index(ctx *gin.Context) { templates, err := h.c.Index(ctx.Request.Context()) if err != nil { - slog.Error("Failed to get space templates", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get space templates", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -61,13 +61,13 @@ func (h *SpaceTemplateHandler) Index(ctx *gin.Context) { func (h *SpaceTemplateHandler) Create(ctx *gin.Context) { var req types.SpaceTemplateReq if err := ctx.ShouldBindJSON(&req); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } res, err := h.c.Create(ctx.Request.Context(), &req) if err != nil { - slog.Error("Failed to create space template", slog.Any("req", req), slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to create space template", slog.Any("req", req), slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -94,13 +94,13 @@ func (h *SpaceTemplateHandler) Update(ctx *gin.Context) { ) var req *types.UpdateSpaceTemplateReq if err := ctx.ShouldBindJSON(&req); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } id, err = strconv.ParseInt(ctx.Param("id"), 10, 64) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -108,7 +108,7 @@ func (h *SpaceTemplateHandler) Update(ctx *gin.Context) { res, err := h.c.Update(ctx.Request.Context(), req) if err != nil { - slog.Error("Failed to update space template", slog.Any("req", req), slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to update space template", slog.Any("req", req), slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -134,14 +134,14 @@ func (h *SpaceTemplateHandler) Delete(ctx *gin.Context) { ) id, err = strconv.ParseInt(ctx.Param("id"), 10, 64) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } err = h.c.Delete(ctx.Request.Context(), id) if err != nil { - slog.Error("Failed to delete space template", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to delete space template", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -164,7 +164,7 @@ func (h *SpaceTemplateHandler) List(ctx *gin.Context) { templateType := ctx.Param("type") templates, err := h.c.FindAllByType(ctx.Request.Context(), templateType) if err != nil { - slog.Error("Failed to list space templates", slog.Any("templateType", templateType), slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to list space templates", slog.Any("templateType", templateType), slog.Any("error", err)) httpbase.ServerError(ctx, err) return } diff --git a/api/handler/sshkey.go b/api/handler/sshkey.go index 7f4a74aa6..853ed96c5 100644 --- a/api/handler/sshkey.go +++ b/api/handler/sshkey.go @@ -48,14 +48,14 @@ type SSHKeyHandler struct { func (h *SSHKeyHandler) Create(ctx *gin.Context) { var req types.CreateSSHKeyRequest if err := ctx.ShouldBindJSON(&req); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } _, err := h.sc.CheckRequestV2(ctx.Request.Context(), &req) if err != nil { - slog.Error("failed to check sensitive request", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "failed to check sensitive request", slog.Any("error", err)) httpbase.BadRequest(ctx, fmt.Errorf("sensitive check failed: %w", err).Error()) return } @@ -64,7 +64,7 @@ func (h *SSHKeyHandler) Create(ctx *gin.Context) { req.Username = currentUser sk, err := h.c.Create(ctx.Request.Context(), &req) if err != nil { - slog.Error("Failed to create SSH key", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to create SSH key", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -89,13 +89,13 @@ func (h *SSHKeyHandler) Index(ctx *gin.Context) { username := ctx.Param("username") per, page, err := common.GetPerAndPageFromContext(ctx) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } sks, err := h.c.Index(ctx.Request.Context(), username, per, page) if err != nil { - slog.Error("Failed to create SSH key", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to create SSH key", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -122,13 +122,13 @@ func (h *SSHKeyHandler) Delete(ctx *gin.Context) { username := ctx.Param("username") if name == "" || username == "" { err := fmt.Errorf("invalid username or key name in url") - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } err := h.c.Delete(ctx.Request.Context(), username, name) if err != nil { - slog.Error("Failed to delete SSH key", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to delete SSH key", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } diff --git a/api/handler/stat.go b/api/handler/stat.go index 536e8ec75..6cc7fe8fa 100644 --- a/api/handler/stat.go +++ b/api/handler/stat.go @@ -45,12 +45,12 @@ func (h *StatHandler) GetStatSnap(ctx *gin.Context) { targetType := ctx.Query("target_type") dateType := ctx.Query("date_type") if !types.IsValidStatTargetType(targetType) { - slog.Error("Bad request target_type", slog.String("target_type", targetType)) + slog.ErrorContext(ctx.Request.Context(), "Bad request target_type", slog.String("target_type", targetType)) httpbase.BadRequest(ctx, "Bad request target_type") return } if !types.IsValidStatDateType(dateType) { - slog.Error("Bad request date_type", slog.String("date_type", dateType)) + slog.ErrorContext(ctx.Request.Context(), "Bad request date_type", slog.String("date_type", dateType)) httpbase.BadRequest(ctx, "Bad request date_type") return } @@ -59,7 +59,7 @@ func (h *StatHandler) GetStatSnap(ctx *gin.Context) { resp, err := h.sc.GetStatSnap(ctx.Request.Context(), req) if err != nil { - slog.Error("Failed to get stat snapshot", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get stat snapshot", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -83,7 +83,7 @@ func (h *StatHandler) GetStatSnap(ctx *gin.Context) { func (h *StatHandler) StatRunningDeploys(ctx *gin.Context) { res, err := h.sc.StatRunningDeploys(ctx.Request.Context()) if err != nil { - slog.Error("failed to stat running deploys", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "failed to stat running deploys", slog.Any("error", err)) httpbase.ServerError(ctx, fmt.Errorf("failed to stat running deploys, %w", err)) return } diff --git a/api/handler/sync_client_setting.go b/api/handler/sync_client_setting.go index 32c6b9614..213ca25e6 100644 --- a/api/handler/sync_client_setting.go +++ b/api/handler/sync_client_setting.go @@ -41,7 +41,7 @@ func NewSyncClientSettingHandler(config *config.Config) (*SyncClientSettingHandl func (h *SyncClientSettingHandler) Create(ctx *gin.Context) { var req types.CreateSyncClientSettingReq if err := ctx.ShouldBindJSON(&req); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequest(ctx, err.Error()) return } @@ -51,7 +51,7 @@ func (h *SyncClientSettingHandler) Create(ctx *gin.Context) { httpbase.UnauthorizedError(ctx, err) return } - slog.Error("Failed to create sync client setting", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Failed to create sync client setting", "error", err) httpbase.ServerError(ctx, err) return } @@ -76,7 +76,7 @@ func (h *SyncClientSettingHandler) Show(ctx *gin.Context) { httpbase.UnauthorizedError(ctx, err) return } - slog.Error("Failed to find sync client setting", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Failed to find sync client setting", "error", err) httpbase.ServerError(ctx, err) return } diff --git a/api/handler/tag.go b/api/handler/tag.go index f29249891..ef8b7f183 100644 --- a/api/handler/tag.go +++ b/api/handler/tag.go @@ -52,7 +52,7 @@ func (t *TagsHandler) AllTags(ctx *gin.Context) { } tags, err := t.tag.AllTags(ctx.Request.Context(), filter) if err != nil { - slog.Error("Failed to load tags", slog.Any("filter", filter), slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to load tags", slog.Any("filter", filter), slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -74,13 +74,13 @@ func (t *TagsHandler) AllTags(ctx *gin.Context) { func (t *TagsHandler) CreateTag(ctx *gin.Context) { var req types.CreateTag if err := ctx.ShouldBindJSON(&req); err != nil { - slog.Error("Bad request format", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", slog.Any("error", err)) httpbase.BadRequest(ctx, err.Error()) return } tag, err := t.tag.CreateTag(ctx.Request.Context(), req) if err != nil { - slog.Error("Failed to create tag", slog.Any("req", req), slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to create tag", slog.Any("req", req), slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -102,13 +102,13 @@ func (t *TagsHandler) CreateTag(ctx *gin.Context) { func (t *TagsHandler) GetTagByID(ctx *gin.Context) { id, err := strconv.ParseInt(ctx.Param("id"), 10, 64) if err != nil { - slog.Error("Bad request format", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", slog.Any("error", err)) httpbase.BadRequest(ctx, err.Error()) return } tag, err := t.tag.GetTagByID(ctx.Request.Context(), id) if err != nil { - slog.Error("Failed to get tag", slog.Int64("id", id), slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get tag", slog.Int64("id", id), slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -131,19 +131,19 @@ func (t *TagsHandler) GetTagByID(ctx *gin.Context) { func (t *TagsHandler) UpdateTag(ctx *gin.Context) { id, err := strconv.ParseInt(ctx.Param("id"), 10, 64) if err != nil { - slog.Error("Bad request format", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", slog.Any("error", err)) httpbase.BadRequest(ctx, err.Error()) return } var req types.UpdateTag if err := ctx.ShouldBindJSON(&req); err != nil { - slog.Error("Bad request format", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", slog.Any("error", err)) httpbase.BadRequest(ctx, err.Error()) return } tag, err := t.tag.UpdateTag(ctx.Request.Context(), id, req) if err != nil { - slog.Error("Failed to update tag", slog.Int64("id", id), slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to update tag", slog.Int64("id", id), slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -165,13 +165,13 @@ func (t *TagsHandler) UpdateTag(ctx *gin.Context) { func (t *TagsHandler) DeleteTag(ctx *gin.Context) { id, err := strconv.ParseInt(ctx.Param("id"), 10, 64) if err != nil { - slog.Error("Bad request format", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", slog.Any("error", err)) httpbase.BadRequest(ctx, err.Error()) return } err = t.tag.DeleteTag(ctx.Request.Context(), id) if err != nil { - slog.Error("Failed to delete tag", slog.Int64("id", id), slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to delete tag", slog.Int64("id", id), slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -192,7 +192,7 @@ func (t *TagsHandler) DeleteTag(ctx *gin.Context) { func (t *TagsHandler) AllCategories(ctx *gin.Context) { categories, err := t.tag.AllCategories(ctx.Request.Context()) if err != nil { - slog.Error("Failed to load categories", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to load categories", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -214,7 +214,7 @@ func (t *TagsHandler) AllCategories(ctx *gin.Context) { func (t *TagsHandler) CreateCategory(ctx *gin.Context) { var req types.CreateCategory if err := ctx.ShouldBindJSON(&req); err != nil { - slog.Error("Bad request format", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", slog.Any("error", err)) httpbase.BadRequest(ctx, err.Error()) return } @@ -224,7 +224,7 @@ func (t *TagsHandler) CreateCategory(ctx *gin.Context) { httpbase.ForbiddenError(ctx, err) return } - slog.Error("Failed to create category", slog.Any("req", req), slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to create category", slog.Any("req", req), slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -246,13 +246,13 @@ func (t *TagsHandler) CreateCategory(ctx *gin.Context) { func (t *TagsHandler) UpdateCategory(ctx *gin.Context) { var req types.UpdateCategory if err := ctx.ShouldBindJSON(&req); err != nil { - slog.Error("Bad request format", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", slog.Any("error", err)) httpbase.BadRequest(ctx, err.Error()) return } id, err := strconv.ParseInt(ctx.Param("id"), 10, 64) if err != nil { - slog.Error("Bad request format", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", slog.Any("error", err)) httpbase.BadRequest(ctx, err.Error()) return } @@ -262,7 +262,7 @@ func (t *TagsHandler) UpdateCategory(ctx *gin.Context) { httpbase.ForbiddenError(ctx, err) return } - slog.Error("Failed to update category", slog.Any("req", req), slog.Any("id", id), slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to update category", slog.Any("req", req), slog.Any("id", id), slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -284,7 +284,7 @@ func (t *TagsHandler) DeleteCategory(ctx *gin.Context) { id, err := strconv.ParseInt(ctx.Param("id"), 10, 64) if err != nil { - slog.Error("Bad request format", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", slog.Any("error", err)) httpbase.BadRequest(ctx, err.Error()) return } @@ -294,7 +294,7 @@ func (t *TagsHandler) DeleteCategory(ctx *gin.Context) { httpbase.ForbiddenError(ctx, err) return } - slog.Error("Failed to delete category", slog.Any("id", id), slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to delete category", slog.Any("id", id), slog.Any("error", err)) httpbase.ServerError(ctx, err) return } diff --git a/api/handler/telemetry.go b/api/handler/telemetry.go index a384f9aa7..4e9f250e2 100644 --- a/api/handler/telemetry.go +++ b/api/handler/telemetry.go @@ -40,13 +40,13 @@ func (th *TelemetryHandler) Usage(ctx *gin.Context) { var usage telemetry.Usage if err := ctx.ShouldBindJSON(&usage); err != nil { newErr := fmt.Errorf("bad request format, %w", err).Error() - slog.Error(newErr) + slog.ErrorContext(ctx.Request.Context(), newErr) httpbase.BadRequest(ctx, newErr) return } err := th.c.SaveUsageData(ctx.Request.Context(), usage) if err != nil { - slog.Error("fail to save usage data", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "fail to save usage data", slog.Any("error", err)) httpbase.ServerError(ctx, errors.New("fail to save usage data")) return } diff --git a/api/handler/user.go b/api/handler/user.go index b58afefb8..83d731004 100644 --- a/api/handler/user.go +++ b/api/handler/user.go @@ -46,7 +46,7 @@ func (h *UserHandler) Datasets(ctx *gin.Context) { var req types.UserDatasetsReq per, page, err := common.GetPerAndPageFromContext(ctx) if err != nil { - slog.Error("Bad request format of page and per", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format of page and per", "error", err) httpbase.BadRequestWithExt(ctx, err) return } @@ -57,7 +57,7 @@ func (h *UserHandler) Datasets(ctx *gin.Context) { req.PageSize = per ds, total, err := h.user.Datasets(ctx.Request.Context(), &req) if err != nil { - slog.Error("Failed to gat user datasets", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to gat user datasets", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -87,7 +87,7 @@ func (h *UserHandler) Models(ctx *gin.Context) { var req types.UserDatasetsReq per, page, err := common.GetPerAndPageFromContext(ctx) if err != nil { - slog.Error("Bad request format of page and per", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format of page and per", "error", err) httpbase.BadRequestWithExt(ctx, err) return } @@ -98,7 +98,7 @@ func (h *UserHandler) Models(ctx *gin.Context) { req.PageSize = per ms, total, err := h.user.Models(ctx.Request.Context(), &req) if err != nil { - slog.Error("Failed to gat user models", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to gat user models", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -129,7 +129,7 @@ func (h *UserHandler) Codes(ctx *gin.Context) { var req types.UserDatasetsReq per, page, err := common.GetPerAndPageFromContext(ctx) if err != nil { - slog.Error("Bad request format of page and per", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format of page and per", "error", err) httpbase.BadRequestWithExt(ctx, err) return } @@ -140,7 +140,7 @@ func (h *UserHandler) Codes(ctx *gin.Context) { req.PageSize = per ms, total, err := h.user.Codes(ctx.Request.Context(), &req) if err != nil { - slog.Error("Failed to gat user codes", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to gat user codes", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -171,7 +171,7 @@ func (h *UserHandler) Spaces(ctx *gin.Context) { var req types.UserSpacesReq per, page, err := common.GetPerAndPageFromContext(ctx) if err != nil { - slog.Error("Bad request format of page and per", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format of page and per", "error", err) httpbase.BadRequestWithExt(ctx, err) return } @@ -182,7 +182,7 @@ func (h *UserHandler) Spaces(ctx *gin.Context) { req.PageSize = per ms, total, err := h.user.Spaces(ctx.Request.Context(), &req) if err != nil { - slog.Error("Failed to gat user space", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to gat user space", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -242,7 +242,7 @@ func (h *UserHandler) LikesCollections(ctx *gin.Context) { var req types.UserCollectionReq per, page, err := common.GetPerAndPageFromContext(ctx) if err != nil { - slog.Error("Bad request format of page and per", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format of page and per", "error", err) httpbase.BadRequestWithExt(ctx, err) return } @@ -253,7 +253,7 @@ func (h *UserHandler) LikesCollections(ctx *gin.Context) { req.PageSize = per ms, total, err := h.user.LikesCollection(ctx.Request.Context(), &req) if err != nil { - slog.Error("Failed to get user collections", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get user collections", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -281,7 +281,7 @@ func (h *UserHandler) UserCollections(ctx *gin.Context) { var req types.UserCollectionReq per, page, err := common.GetPerAndPageFromContext(ctx) if err != nil { - slog.Error("Bad request format of page and per", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format of page and per", "error", err) httpbase.BadRequestWithExt(ctx, err) return } @@ -292,7 +292,7 @@ func (h *UserHandler) UserCollections(ctx *gin.Context) { req.PageSize = per ms, total, err := h.user.Collections(ctx.Request.Context(), &req) if err != nil { - slog.Error("Failed to get user collections", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get user collections", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -414,7 +414,7 @@ func (h *UserHandler) LikesSpaces(ctx *gin.Context) { var req types.UserCollectionReq per, page, err := common.GetPerAndPageFromContext(ctx) if err != nil { - slog.Error("Bad request format of page and per", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format of page and per", "error", err) httpbase.BadRequestWithExt(ctx, err) return } @@ -426,7 +426,7 @@ func (h *UserHandler) LikesSpaces(ctx *gin.Context) { ms, total, err := h.user.LikesSpaces(ctx.Request.Context(), &req) if err != nil { - slog.Error("Failed to gat user space", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to gat user space", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -457,7 +457,7 @@ func (h *UserHandler) LikesCodes(ctx *gin.Context) { var req types.UserDatasetsReq per, page, err := common.GetPerAndPageFromContext(ctx) if err != nil { - slog.Error("Bad request format of page and per", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format of page and per", "error", err) httpbase.BadRequestWithExt(ctx, err) return } @@ -468,7 +468,7 @@ func (h *UserHandler) LikesCodes(ctx *gin.Context) { req.PageSize = per ms, total, err := h.user.LikesCodes(ctx.Request.Context(), &req) if err != nil { - slog.Error("Failed to gat user codes", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to gat user codes", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -500,7 +500,7 @@ func (h *UserHandler) LikesModels(ctx *gin.Context) { var req types.UserDatasetsReq per, page, err := common.GetPerAndPageFromContext(ctx) if err != nil { - slog.Error("Bad request format of page and per", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format of page and per", "error", err) httpbase.BadRequestWithExt(ctx, err) return } @@ -511,7 +511,7 @@ func (h *UserHandler) LikesModels(ctx *gin.Context) { req.PageSize = per ms, total, err := h.user.LikesModels(ctx.Request.Context(), &req) if err != nil { - slog.Error("Failed to gat user models", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to gat user models", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -543,7 +543,7 @@ func (h *UserHandler) LikesDatasets(ctx *gin.Context) { var req types.UserDatasetsReq per, page, err := common.GetPerAndPageFromContext(ctx) if err != nil { - slog.Error("Bad request format of page and per", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format of page and per", "error", err) httpbase.BadRequestWithExt(ctx, err) return } @@ -554,7 +554,7 @@ func (h *UserHandler) LikesDatasets(ctx *gin.Context) { req.PageSize = per ds, total, err := h.user.LikesDatasets(ctx.Request.Context(), &req) if err != nil { - slog.Error("Failed to get user datasets", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get user datasets", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -610,20 +610,20 @@ func (h *UserHandler) GetRunDeploys(ctx *gin.Context) { } deployType, err := strconv.Atoi(deployTypeStr) if err != nil { - slog.Error("Bad request deploy type format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request deploy type format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } per, page, err := common.GetPerAndPageFromContext(ctx) if err != nil { - slog.Error("Bad request format of page and per", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Bad request format of page and per", slog.Any("error", err)) httpbase.BadRequestWithExt(ctx, err) return } repoType := common.RepoTypeFromParam(ctx) if repoType != types.ModelRepo && repoType != types.SpaceRepo { - slog.Error("Invalid repo type", slog.Any("repo_type", repoType)) + slog.ErrorContext(ctx.Request.Context(), "Invalid repo type", slog.Any("repo_type", repoType)) httpbase.BadRequestWithExt(ctx, errorx.ReqParamInvalid(errors.New("Invalid repo type"), nil)) return } @@ -636,7 +636,7 @@ func (h *UserHandler) GetRunDeploys(ctx *gin.Context) { req.DeployType = deployType ds, total, err := h.user.ListDeploys(ctx.Request.Context(), repoType, &req) if err != nil { - slog.Error("Failed to get deploy repo list", slog.Any("error", err), slog.Any("req", req)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get deploy repo list", slog.Any("error", err), slog.Any("req", req)) httpbase.ServerError(ctx, err) return } @@ -669,7 +669,7 @@ func (h *UserHandler) GetFinetuneInstances(ctx *gin.Context) { per, page, err := common.GetPerAndPageFromContext(ctx) if err != nil { - slog.Error("Bad request format of page and per", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Bad request format of page and per", slog.Any("error", err)) httpbase.BadRequestWithExt(ctx, err) return } @@ -679,7 +679,7 @@ func (h *UserHandler) GetFinetuneInstances(ctx *gin.Context) { req.PageSize = per ds, total, err := h.user.ListInstances(ctx.Request.Context(), &req) if err != nil { - slog.Error("Failed to get instance list", slog.Any("error", err), slog.Any("req", req)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get instance list", slog.Any("error", err), slog.Any("req", req)) httpbase.ServerError(ctx, err) return } @@ -711,7 +711,7 @@ func (h *UserHandler) GetRunServerless(ctx *gin.Context) { per, page, err := common.GetPerAndPageFromContext(ctx) if err != nil { - slog.Error("Bad request format of page and per", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Bad request format of page and per", slog.Any("error", err)) httpbase.BadRequestWithExt(ctx, err) return } @@ -724,7 +724,7 @@ func (h *UserHandler) GetRunServerless(ctx *gin.Context) { req.DeployType = types.ServerlessType ds, total, err := h.user.ListServerless(ctx.Request.Context(), req) if err != nil { - slog.Error("Failed to get serverless list", slog.Any("error", err), slog.Any("req", req)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get serverless list", slog.Any("error", err), slog.Any("req", req)) httpbase.ServerError(ctx, err) return } @@ -751,7 +751,7 @@ func (h *UserHandler) GetRunServerless(ctx *gin.Context) { func (h *UserHandler) CreateUserResource(ctx *gin.Context) { var req types.CreateUserResourceReq if err := ctx.ShouldBindJSON(&req); err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } @@ -761,7 +761,7 @@ func (h *UserHandler) CreateUserResource(ctx *gin.Context) { req.Username = ctx.Param("username") err := h.user.CreateUserResource(ctx.Request.Context(), req) if err != nil { - slog.Error("failed to create order for user's resource", slog.Any("error", err), slog.Any("req", req)) + slog.ErrorContext(ctx.Request.Context(), "failed to create order for user's resource", slog.Any("error", err), slog.Any("req", req)) httpbase.ServerError(ctx, err) return } @@ -784,13 +784,13 @@ func (h *UserHandler) DeleteUserResource(ctx *gin.Context) { orderDetailIdstr := ctx.Param("id") orderDetailId, err := strconv.ParseInt(orderDetailIdstr, 10, 64) if err != nil { - slog.Error("Bad request format", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format", "error", err) httpbase.BadRequestWithExt(ctx, err) return } err = h.user.DeleteUserResource(ctx.Request.Context(), username, orderDetailId) if err != nil { - slog.Error("failed to create order for user's resource", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "failed to create order for user's resource", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -815,7 +815,7 @@ func (h *UserHandler) GetUserResource(ctx *gin.Context) { username := ctx.Param("username") per, page, err := common.GetPerAndPageFromContext(ctx) if err != nil { - slog.Error("Bad request format of page and per", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Bad request format of page and per", slog.Any("error", err)) httpbase.BadRequestWithExt(ctx, err) return } @@ -825,7 +825,7 @@ func (h *UserHandler) GetUserResource(ctx *gin.Context) { req.PageSize = per ds, total, err := h.user.GetUserResource(ctx.Request.Context(), req) if err != nil { - slog.Error("failed to get user's resource", slog.Any("error", err), slog.Any("username", username)) + slog.ErrorContext(ctx.Request.Context(), "failed to get user's resource", slog.Any("error", err), slog.Any("username", username)) httpbase.ServerError(ctx, err) return } @@ -855,7 +855,7 @@ func (h *UserHandler) Prompts(ctx *gin.Context) { var req types.UserPromptsReq per, page, err := common.GetPerAndPageFromContext(ctx) if err != nil { - slog.Error("Bad request format of page and per", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format of page and per", "error", err) httpbase.BadRequestWithExt(ctx, err) return } @@ -866,7 +866,7 @@ func (h *UserHandler) Prompts(ctx *gin.Context) { req.PageSize = per ds, total, err := h.user.Prompts(ctx.Request.Context(), &req) if err != nil { - slog.Error("Failed to get user prompts", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get user prompts", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -897,7 +897,7 @@ func (h *UserHandler) GetEvaluations(ctx *gin.Context) { var req types.UserEvaluationReq per, page, err := common.GetPerAndPageFromContext(ctx) if err != nil { - slog.Error("Bad request format of page and per", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format of page and per", "error", err) httpbase.BadRequestWithExt(ctx, err) return } @@ -908,7 +908,7 @@ func (h *UserHandler) GetEvaluations(ctx *gin.Context) { req.PageSize = per ds, total, err := h.user.Evaluations(ctx.Request.Context(), &req) if err != nil { - slog.Error("Failed to get user evaluations", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get user evaluations", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } @@ -938,7 +938,7 @@ func (h *UserHandler) MCPServers(ctx *gin.Context) { var req types.UserMCPsReq per, page, err := common.GetPerAndPageFromContext(ctx) if err != nil { - slog.Error("Bad request format of page and per", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format of page and per", "error", err) httpbase.BadRequestWithExt(ctx, err) return } @@ -949,7 +949,7 @@ func (h *UserHandler) MCPServers(ctx *gin.Context) { req.PageSize = per mcps, total, err := h.user.MCPServers(ctx.Request.Context(), &req) if err != nil { - slog.Error("Failed to get user mcp servers", slog.Any("error", err), slog.Any("req", req)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get user mcp servers", slog.Any("error", err), slog.Any("req", req)) httpbase.ServerError(ctx, err) return } @@ -979,7 +979,7 @@ func (h *UserHandler) LikesMCPServers(ctx *gin.Context) { var req types.UserMCPsReq per, page, err := common.GetPerAndPageFromContext(ctx) if err != nil { - slog.Error("Bad request format of page and per", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format of page and per", "error", err) httpbase.BadRequestWithExt(ctx, err) return } @@ -990,7 +990,7 @@ func (h *UserHandler) LikesMCPServers(ctx *gin.Context) { req.PageSize = per data, total, err := h.user.LikesMCPServers(ctx.Request.Context(), &req) if err != nil { - slog.Error("Failed to get user likes mcp servers", slog.Any("error", err), slog.Any("req", req)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get user likes mcp servers", slog.Any("error", err), slog.Any("req", req)) httpbase.ServerError(ctx, err) return } @@ -1058,7 +1058,7 @@ func (h *UserHandler) GetUserFinetunes(ctx *gin.Context) { var req types.UserEvaluationReq per, page, err := common.GetPerAndPageFromContext(ctx) if err != nil { - slog.Error("Bad request format of page and per", "error", err) + slog.ErrorContext(ctx.Request.Context(), "Bad request format of page and per", "error", err) httpbase.BadRequestWithExt(ctx, err) return } @@ -1069,7 +1069,7 @@ func (h *UserHandler) GetUserFinetunes(ctx *gin.Context) { req.PageSize = per ds, total, err := h.user.ListFinetunes(ctx.Request.Context(), &req) if err != nil { - slog.Error("Failed to get user backend finetunes", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to get user backend finetunes", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } diff --git a/api/handler/webhook.go b/api/handler/webhook.go index f61687bde..a27705816 100644 --- a/api/handler/webhook.go +++ b/api/handler/webhook.go @@ -34,7 +34,7 @@ func (h *WebHookHandler) ReceiveRunnerWebHook(ctx *gin.Context) { var reqEvent types.WebHookRecvEvent if err := ctx.ShouldBindJSON(&reqEvent); err != nil { - slog.Error("Bad request format for webhook event", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Bad request format for webhook event", slog.Any("error", err)) httpbase.BadRequest(ctx, err.Error()) return } @@ -43,7 +43,7 @@ func (h *WebHookHandler) ReceiveRunnerWebHook(ctx *gin.Context) { err := h.webhookComp.HandleWebHook(ctx.Request.Context(), &reqEvent) if err != nil { - slog.Error("Failed to handle webhook event", slog.Any("error", err)) + slog.ErrorContext(ctx.Request.Context(), "Failed to handle webhook event", slog.Any("error", err)) httpbase.ServerError(ctx, err) return } diff --git a/api/middleware/authenticator.go b/api/middleware/authenticator.go index cd58a932c..6182bd351 100644 --- a/api/middleware/authenticator.go +++ b/api/middleware/authenticator.go @@ -1,7 +1,6 @@ package middleware import ( - "context" "fmt" "log/slog" "strings" @@ -38,7 +37,7 @@ func BuildJwtSession(jwtSignKey string) gin.HandlerFunc { sessions.Default(c).Set(httpbase.CurrentUserUUIDCtxVar, claims.UUID) err = sessions.Default(c).Save() if err != nil { - slog.Error("fail to save session", slog.Any("error", err)) + slog.ErrorContext(c.Request.Context(), "fail to save session", slog.Any("error", err)) httpbase.UnauthorizedError(c, errorx.InvalidAuthHeader(err, nil)) c.Abort() return @@ -164,14 +163,14 @@ func isValidJWTToken(c *gin.Context, config *config.Config, token string) bool { httpbase.SetAuthType(c, httpbase.AuthTypeJwt) return true } else { - slog.Error("verify jwt token error", slog.Any("error", err)) + slog.ErrorContext(c.Request.Context(), "verify jwt token error", slog.Any("error", err)) } } return false } func isValidAccessToken(c *gin.Context, userSvcClient rpc.UserSvcClient, token string) bool { - user, err := userSvcClient.VerifyByAccessToken(context.Background(), token) + user, err := userSvcClient.VerifyByAccessToken(c.Request.Context(), token) if err != nil { slog.ErrorContext(c, "verify access token error", slog.Any("error", err)) return false @@ -305,7 +304,7 @@ func UserMatch() gin.HandlerFunc { userName := ctx.Param("username") if userName != currentUser { httpbase.UnauthorizedError(ctx, errorx.ErrUserNotMatch) - slog.Error("user not match, try to query user account not owned", "currentUser", currentUser, "userName", userName) + slog.ErrorContext(ctx.Request.Context(), "user not match, try to query user account not owned", "currentUser", currentUser, "userName", userName) ctx.Abort() return } diff --git a/api/middleware/git_http_param.go b/api/middleware/git_http_param.go index 45257a2a4..d1f0ac211 100644 --- a/api/middleware/git_http_param.go +++ b/api/middleware/git_http_param.go @@ -2,7 +2,6 @@ package middleware import ( "compress/gzip" - "context" "encoding/base64" "fmt" "io" @@ -96,7 +95,7 @@ func GetCurrentUserFromHeader() gin.HandlerFunc { } username = strings.Split(string(authInfo), ":")[0] token = strings.Split(string(authInfo), ":")[1] - user, err := userStore.FindByGitAccessToken(context.Background(), token) + user, err := userStore.FindByGitAccessToken(c.Request.Context(), token) if err != nil { slog.Info("Failed to find user by git access token", slog.Any("header", authHeader), slog.Any("token", token), slog.Any("error", err)) c.Next() @@ -107,7 +106,7 @@ func GetCurrentUserFromHeader() gin.HandlerFunc { } } else if strings.HasPrefix(authHeader, "Bearer ") { token = strings.TrimPrefix(authHeader, "Bearer ") - user, err := userStore.FindByGitAccessToken(context.Background(), token) + user, err := userStore.FindByGitAccessToken(c.Request.Context(), token) if err != nil { slog.Info("Failed to find user by git access token", slog.Any("header", authHeader), slog.Any("token", token), slog.Any("error", err)) c.Next() diff --git a/api/middleware/log.go b/api/middleware/log.go index e53212edf..7f4ab09bb 100644 --- a/api/middleware/log.go +++ b/api/middleware/log.go @@ -17,7 +17,8 @@ func Log() gin.HandlerFunc { } startTime := time.Now() - traceID := trace.GetOrGenTraceID(ctx) + _ = trace.GetOrGenTraceID(ctx) + ctx.Next() latency := time.Since(startTime).Milliseconds() @@ -29,7 +30,8 @@ func Log() gin.HandlerFunc { slog.Any("auth_type", httpbase.GetAuthType(ctx)), slog.String("url", ctx.Request.URL.RequestURI()), slog.String("full_path", ctx.FullPath()), - slog.String("trace_id", traceID), + slog.String("req_header_range", ctx.GetHeader("Range")), + slog.String("rsp_content_range", ctx.Writer.Header().Get("Content-Range")), ) } } diff --git a/api/middleware/recovery.go b/api/middleware/recovery.go index 5226da27a..4e1f01209 100644 --- a/api/middleware/recovery.go +++ b/api/middleware/recovery.go @@ -22,7 +22,7 @@ func Recovery() gin.HandlerFunc { } // Get trace ID traceID := trace.GetTraceIDInGinContext(c) - slog.Error("[Recovery from panic]", + slog.ErrorContext(c.Request.Context(), "[Recovery from panic]", slog.Time("time", time.Now()), slog.String("trace_id", traceID), slog.String("method", c.Request.Method), diff --git a/api/middleware/request.go b/api/middleware/request.go index 88c21acc2..85ef84814 100644 --- a/api/middleware/request.go +++ b/api/middleware/request.go @@ -2,17 +2,25 @@ package middleware import ( "context" + "github.com/gin-gonic/gin" "opencsg.com/csghub-server/common/utils/trace" ) func Request() gin.HandlerFunc { - return func(ctx *gin.Context) { - ctx.Set("clientIP", ctx.ClientIP()) - reqCtx := context.WithValue(ctx.Request.Context(), "clientIP", ctx.ClientIP()) - ctx.Request = ctx.Request.WithContext(reqCtx) - traceID := trace.GetOrGenTraceID(ctx) - ctx.Writer.Header().Set(trace.HeaderRequestID, traceID) - ctx.Next() + return func(c *gin.Context) { + c.Set("clientIP", c.ClientIP()) + reqCtx := context.WithValue(c.Request.Context(), "clientIP", c.ClientIP()) + c.Request = c.Request.WithContext(reqCtx) + traceID := trace.GetOrGenTraceID(c) + c.Writer.Header().Set(trace.HeaderRequestID, traceID) + + sessionID := c.GetHeader(trace.HeaderXetSessionID) + if sessionID != "" { + ctx := trace.SetSessionIDInContext(c.Request.Context(), sessionID) + c.Request = c.Request.WithContext(ctx) + } + + c.Next() } } diff --git a/api/workflow/activity/sync_as_client.go b/api/workflow/activity/sync_as_client.go index f14de4bc2..f1c287e4e 100644 --- a/api/workflow/activity/sync_as_client.go +++ b/api/workflow/activity/sync_as_client.go @@ -13,7 +13,7 @@ func (a *Activities) SyncAsClient(ctx context.Context) error { } setting, err := a.stores.syncClientSetting.First(ctx) if err != nil { - slog.Error("failed to find sync client setting", "error", err) + slog.ErrorContext(ctx, "failed to find sync client setting", "error", err) return err } apiDomain := a.config.MultiSync.SaasAPIDomain diff --git a/builder/rpc/http_client.go b/builder/rpc/http_client.go index b6994b2b2..63b7e3575 100644 --- a/builder/rpc/http_client.go +++ b/builder/rpc/http_client.go @@ -192,8 +192,8 @@ func (c *HttpClient) Post(ctx context.Context, path string, data interface{}, ou func (c *HttpClient) Do(req *http.Request) (resp *http.Response, err error) { ctx := req.Context() fullPath := req.URL.String() - traceID, traceParent, isNew := trace.GetOrGenTraceIDFromContext(ctx) - if isNew { + traceID, traceParent, _ := trace.GetOrGenTraceIDFromContext(ctx) + if traceParent != "" { req.Header.Set(trace.HeaderTraceparent, traceParent) } diff --git a/builder/rpc/user_svc_client.go b/builder/rpc/user_svc_client.go index 48e0fe10f..e16294990 100644 --- a/builder/rpc/user_svc_client.go +++ b/builder/rpc/user_svc_client.go @@ -3,6 +3,7 @@ package rpc import ( "context" "fmt" + "log/slog" "net/url" "opencsg.com/csghub-server/api/httpbase" @@ -42,12 +43,18 @@ func (c *UserSvcHttpClient) GetMemberRole(ctx context.Context, orgName, userName r.Data = membership.RoleUnknown err := c.hc.Get(ctx, url, &r) if err != nil { - return membership.RoleUnknown, fmt.Errorf("failed to get member role: %w", err) + slog.ErrorContext(ctx, "call user service failed", slog.String("error", err.Error())) + return membership.RoleUnknown, errorx.RemoteSvcFail(err, + errorx.Ctx(). + Set("service", "user service"). + Set("action", "get member role"). + Set("orgName", orgName). + Set("userName", userName)) } role, ok := r.Data.(string) if !ok { - return membership.RoleUnknown, fmt.Errorf("failed to convert r.Data '%v' to membership.Role, err:%w", r.Data, errorx.ErrInternalServerError) + return membership.RoleUnknown, errorx.InternalServerError(fmt.Errorf("failed to convert r.Data '%v' to membership.Role", r.Data), nil) } return membership.Role(role), nil } @@ -59,7 +66,12 @@ func (c *UserSvcHttpClient) GetNameSpaceInfo(ctx context.Context, path string) ( r.Data = &Namespace{} err := c.hc.Get(ctx, url, &r) if err != nil { - return nil, fmt.Errorf("failed to get namespace '%s' info: %w", path, err) + slog.ErrorContext(ctx, "call user service failed", slog.String("error", err.Error())) + return nil, errorx.RemoteSvcFail(err, + errorx.Ctx(). + Set("service", "user service"). + Set("action", "get namespace info"). + Set("path", path)) } return r.Data.(*Namespace), nil @@ -71,7 +83,13 @@ func (c *UserSvcHttpClient) GetUserInfo(ctx context.Context, userName, visitorNa r.Data = &User{} err := c.hc.Get(ctx, url, &r) if err != nil { - return nil, fmt.Errorf("failed to get user '%s' info: %w", userName, err) + slog.ErrorContext(ctx, "call user service failed", slog.String("error", err.Error())) + return nil, errorx.RemoteSvcFail(err, + errorx.Ctx(). + Set("service", "user service"). + Set("action", "get user info"). + Set("userName", userName). + Set("visitorName", visitorName)) } return r.Data.(*User), nil @@ -83,7 +101,13 @@ func (c *UserSvcHttpClient) GetOrCreateFirstAvaiTokens(ctx context.Context, user r.Data = interface{}("") err := c.hc.Get(ctx, url, &r) if err != nil { - return "", fmt.Errorf("failed to get user '%s' token for %s: %w", userName, app, err) + slog.ErrorContext(ctx, "call user service failed", slog.String("error", err.Error())) + return "", errorx.RemoteSvcFail(err, + errorx.Ctx(). + Set("service", "user service"). + Set("action", "get or create tokens"). + Set("userName", userName). + Set("app", app)) } return r.Data.(string), nil } @@ -94,7 +118,11 @@ func (c *UserSvcHttpClient) VerifyByAccessToken(ctx context.Context, token strin r.Data = &types.CheckAccessTokenResp{} err := c.hc.Get(ctx, url, &r) if err != nil { - return nil, fmt.Errorf("failed to verify access token info: %w", err) + slog.ErrorContext(ctx, "call user service failed", slog.String("error", err.Error())) + return nil, errorx.RemoteSvcFail(err, + errorx.Ctx(). + Set("service", "user service"). + Set("action", "verify access token")) } return r.Data.(*types.CheckAccessTokenResp), nil @@ -106,7 +134,12 @@ func (c *UserSvcHttpClient) GetUserByName(ctx context.Context, userName string) r.Data = &types.User{} err := c.hc.Get(ctx, url, &r) if err != nil { - return nil, fmt.Errorf("failed get user by username: %w", err) + slog.ErrorContext(ctx, "call user service failed", slog.String("error", err.Error())) + return nil, errorx.RemoteSvcFail(err, + errorx.Ctx(). + Set("service", "user service"). + Set("action", "get user by name"). + Set("userName", userName)) } return r.Data.(*types.User), nil @@ -124,7 +157,12 @@ func (c *UserSvcHttpClient) FindByUUIDs(ctx context.Context, uuids []string) (ma } err := c.hc.Get(ctx, url, &resp) if err != nil { - return nil, fmt.Errorf("failed to find users by uuids: %w", err) + slog.ErrorContext(ctx, "call user service failed", slog.String("error", err.Error())) + return nil, errorx.RemoteSvcFail(err, + errorx.Ctx(). + Set("service", "user service"). + Set("action", "find users by uuids"). + Set("uuidCount", len(uuids))) } result := make(map[string]*types.User) if resp.Data != nil { @@ -147,7 +185,13 @@ func (c *UserSvcHttpClient) GetUserUUIDs(ctx context.Context, per, page int) ([] } err := c.hc.Get(ctx, url, &resp) if err != nil { - return nil, 0, fmt.Errorf("failed to get user uuids: %w", err) + slog.ErrorContext(ctx, "call user service failed", slog.String("error", err.Error())) + return nil, 0, errorx.RemoteSvcFail(err, + errorx.Ctx(). + Set("service", "user service"). + Set("action", "get user uuids"). + Set("per", per). + Set("page", page)) } return resp.Data.UserUUIDs, resp.Data.Total, nil } @@ -161,7 +205,13 @@ func (c *UserSvcHttpClient) GetEmails(ctx context.Context, per, page int) ([]str } err := c.hc.Get(ctx, url, &resp) if err != nil { - return nil, 0, fmt.Errorf("failed to get user emails: %w", err) + slog.ErrorContext(ctx, "call user service failed", slog.String("error", err.Error())) + return nil, 0, errorx.RemoteSvcFail(err, + errorx.Ctx(). + Set("service", "user service"). + Set("action", "get user emails"). + Set("per", per). + Set("page", page)) } return resp.Data, resp.Total, nil } diff --git a/cmd/csghub-server/cmd/root.go b/cmd/csghub-server/cmd/root.go index 14b824ef2..f7a7814a0 100644 --- a/cmd/csghub-server/cmd/root.go +++ b/cmd/csghub-server/cmd/root.go @@ -3,6 +3,8 @@ package cmd import ( "fmt" "log/slog" + "opencsg.com/csghub-server/cmd/csghub-server/cmd/temporal-worker" + "opencsg.com/csghub-server/common/log" "os" "github.com/spf13/cobra" @@ -24,7 +26,6 @@ import ( "opencsg.com/csghub-server/cmd/csghub-server/cmd/user" "opencsg.com/csghub-server/cmd/csghub-server/cmd/version" "opencsg.com/csghub-server/common/config" - "opencsg.com/csghub-server/cmd/csghub-server/cmd/temporal-worker" ) var ( @@ -101,7 +102,10 @@ func setupLog(lvl, format string) { default: handler = slog.NewTextHandler(os.Stdout, opt) } + // Wrap the default handler with the TraceIDHandler + h := &log.ContextHandler{Handler: handler} + fmt.Printf("init logger, level: %s, format: %s\n", logLevel.String(), format) - logger = slog.New(handler) + logger = slog.New(h) slog.SetDefault(logger) } diff --git a/common/log/context_handler.go b/common/log/context_handler.go new file mode 100644 index 000000000..c1983b01a --- /dev/null +++ b/common/log/context_handler.go @@ -0,0 +1,24 @@ +package log + +import ( + "context" + "log/slog" + + "opencsg.com/csghub-server/common/utils/trace" +) + +// ContextHandler is a slog.Handler that adds trace ID and session ID to every log record. +type ContextHandler struct { + slog.Handler +} + +// Handle adds the trace ID and session ID to the log record before passing it to the underlying handler. +func (h *ContextHandler) Handle(ctx context.Context, r slog.Record) error { + if traceID, _ := trace.GetTraceIDFromContext(ctx); traceID != "" { + r.AddAttrs(slog.String("trace_id", traceID)) + } + if sessionID := trace.GetSessionIDFromContext(ctx); sessionID != "" { + r.AddAttrs(slog.String("xnet_session_id", sessionID)) + } + return h.Handler.Handle(ctx, r) +} diff --git a/common/utils/trace/trace.go b/common/utils/trace/trace.go index dda277431..323907b6e 100644 --- a/common/utils/trace/trace.go +++ b/common/utils/trace/trace.go @@ -13,12 +13,26 @@ import ( ) const ( - HeaderRequestID = "X-Request-ID" - HeaderTraceparent = "traceparent" - HeaderXB3 = "X-B3-TraceId" - HeaderKong = "X-Kong-Request-Id" + HeaderRequestID = "X-Request-ID" + HeaderTraceparent = "Traceparent" + HeaderXB3 = "X-B3-TraceId" + HeaderKong = "X-Kong-Request-Id" + HeaderXetSessionID = "X-Xet-Session-Id" ) +type sessionIDContextKey struct{} + +func SetSessionIDInContext(ctx context.Context, sessionID string) context.Context { + return context.WithValue(ctx, sessionIDContextKey{}, sessionID) +} + +func GetSessionIDFromContext(ctx context.Context) string { + if sessionID, ok := ctx.Value(sessionIDContextKey{}).(string); ok { + return sessionID + } + return "" +} + // traceContextKey is used as the key for the trace ID in context.Context. // Using a private custom type avoids key collisions. type traceContextKey struct{} @@ -39,13 +53,29 @@ var ( // IMPORTANT: It now also injects the trace ID into the request's context.Context. func GetOrGenTraceID(c *gin.Context) string { traceID := GetTraceIDInGinContext(c) + traceparent := "" if traceID == "" { - traceID = uuid.New().String() + traceID, traceparent, _ = GetOrGenTraceIDFromContext(c.Request.Context()) } // If no trace ID is found in headers, generate a new one c.Set(HeaderRequestID, traceID) - reqCtx := setTraceIDInRequestContext(c.Request.Context(), traceID) + + // Ensure trace ID is always available in context.Context via our internal key + // This bridges the gap for code that relies on GetTraceIDFromContext's internal key lookup + spanCtx := trace.SpanContextFromContext(c.Request.Context()) + + // If traceparent is missing (e.g. traceID found in Gin cache), try to reconstruct it from Span + if traceparent == "" && spanCtx.HasTraceID() { + traceparent = fmt.Sprintf("00-%s-%s-%02x", spanCtx.TraceID().String(), spanCtx.SpanID().String(), spanCtx.TraceFlags()) + } + + if traceparent == "" { + traceparent = fmt.Sprintf("00-%s-00000000-01", traceID) + } + + reqCtx := setTraceIDInRequestContext(c.Request.Context(), traceparent) c.Request = c.Request.WithContext(reqCtx) + return traceID } @@ -78,9 +108,9 @@ func GetTraceIDInGinContext(c *gin.Context) string { } if header == HeaderTraceparent { // W3C Trace Context format: version-traceid-spanid-traceflags - parts := strings.Split(headerValue, "-") - if len(parts) == 4 { - return parts[1] + traceID := ExtalTraceFromTraceparent(headerValue) + if traceID != "" { + return traceID } continue } @@ -89,18 +119,43 @@ func GetTraceIDInGinContext(c *gin.Context) string { return "" } +func ExtalTraceFromTraceparent(traceparent string) string { + parts := strings.Split(traceparent, "-") + if len(parts) == 4 { + return parts[1] + } + return "" +} + // setTraceIDInRequestContext injects the trace ID into the request's context.Context. func setTraceIDInRequestContext(ctx context.Context, traceID string) context.Context { return context.WithValue(ctx, traceContextKey{}, traceID) } -// GetOrGenTraceIDFromContext tries to get trace info from otel span, or generates new ones. -// It returns the traceID, the full traceparent header string, and whether it's newly generated. -func GetOrGenTraceIDFromContext(ctx context.Context) (traceID, traceParent string, isNew bool) { +// GetTraceIDFromContext tries to get trace info from the context. +// It checks for a trace ID in the context value and then from the OpenTelemetry span. +// It does not generate a new trace ID if one is not found. +func GetTraceIDFromContext(ctx context.Context) (traceID, traceParent string) { if nil == ctx { - return "", "", false + return "", "" + } + + // 0. Special handling for *gin.Context because its Value() method + // might not delegate correctly to Request.Context() for struct keys. + if c, ok := ctx.(*gin.Context); ok && c.Request != nil && c.Request.Context() != nil { + ctx = c.Request.Context() + } + + // 1. Get from ctx traceContextKey + values := ctx.Value(traceContextKey{}) + if values != nil { + traceParent, ok := values.(string) + if ok { + traceID := ExtalTraceFromTraceparent(traceParent) + return traceID, traceParent + } } - // get trace id from otel span + // 2. get trace id from otel span spanCtx := trace.SpanContextFromContext(ctx) if spanCtx.HasTraceID() && spanCtx.TraceID().String() != (trace.TraceID{}).String() { traceID = spanCtx.TraceID().String() @@ -108,10 +163,21 @@ func GetOrGenTraceIDFromContext(ctx context.Context) (traceID, traceParent strin // Ensure spanID is valid before creating traceParent if spanID != (trace.SpanID{}).String() { traceParent = fmt.Sprintf("00-%s-%s-%02x", traceID, spanID, spanCtx.TraceFlags()) - return traceID, traceParent, false + return traceID, traceParent } } + return "", "" +} + +// GetOrGenTraceIDFromContext tries to get trace info from otel span, or generates new ones. +// It returns the traceID, the full traceparent header string, and whether it's newly generated. +func GetOrGenTraceIDFromContext(ctx context.Context) (traceID, traceParent string, isNew bool) { + traceID, traceParent = GetTraceIDFromContext(ctx) + if traceID != "" { + return traceID, traceParent, false + } + // generate a new trace id and span id traceID = strings.ReplaceAll(uuid.New().String(), "-", "") spanIDBytes := make([]byte, 8) diff --git a/common/utils/trace/trace_test.go b/common/utils/trace/trace_test.go index 18530ead5..a73691868 100644 --- a/common/utils/trace/trace_test.go +++ b/common/utils/trace/trace_test.go @@ -1,6 +1,7 @@ package trace import ( + "context" "net/http" "net/http/httptest" "testing" @@ -98,3 +99,91 @@ func TestSetTraceID(t *testing.T) { assert.Equal(t, "x-request-id", traceID) }) } + +func TestContextTraceID(t *testing.T) { + // Test case 1: Standard context + ctx := context.Background() + traceParent := "00-1234567890abcdef1234567890abcdef-0000000000000000-01" + traceID := "1234567890abcdef1234567890abcdef" + + // Mock set logic (since setTraceIDInRequestContext is private, we can use it here as we are in package trace) + ctx = setTraceIDInRequestContext(ctx, traceParent) + + gotID, gotParent := GetTraceIDFromContext(ctx) + assert.Equal(t, traceID, gotID) + assert.Equal(t, traceParent, gotParent) + + // Test case 2: Gin context + gin.SetMode(gin.TestMode) + w := httptest.NewRecorder() + c, _ := gin.CreateTestContext(w) + req, _ := http.NewRequest("GET", "/", nil) + c.Request = req + + // Mock GetOrGenTraceID logic + reqCtx := setTraceIDInRequestContext(c.Request.Context(), traceParent) + c.Request = c.Request.WithContext(reqCtx) + + // Verify direct retrieval from request context + val := c.Request.Context().Value(traceContextKey{}) + assert.NotNil(t, val, "Value should be in request context") + t.Logf("Direct Value type: %T, value: %v", val, val) + + // Verify retrieval via Gin Context Value method directly + ginVal := c.Value(traceContextKey{}) + t.Logf("Gin Value type: %T, value: %v", ginVal, ginVal) + + // Debug generic struct key + type myKey struct{} + c.Request = c.Request.WithContext(context.WithValue(c.Request.Context(), myKey{}, "test-val")) + t.Logf("MyKey Value via Request Context: %v", c.Request.Context().Value(myKey{})) + t.Logf("MyKey Value via Gin Context: %v", c.Value(myKey{})) + + // Verify retrieval via String Key (simulating HeaderRequestID) + c.Set("X-Request-ID", traceID) + valStr := c.Value("X-Request-ID") + assert.Equal(t, traceID, valStr) + t.Logf("String Key Value via Gin Context: %v", valStr) + + // Verify retrieval via Gin Context + // GetTraceIDFromContext accepts context.Context. *gin.Context implements it. + // However, gin.Context.Value() delegates to Request.Context().Value() for non-string keys. + gotID2, gotParent2 := GetTraceIDFromContext(c) + assert.Equal(t, traceID, gotID2) + assert.Equal(t, traceParent, gotParent2) +} + +func TestGetOrGenTraceID_AlwaysInjects(t *testing.T) { + gin.SetMode(gin.TestMode) + c, _ := gin.CreateTestContext(httptest.NewRecorder()) + c.Request, _ = http.NewRequest("GET", "/", nil) + + // Simulate OTEL Span + ctx, span := otel.GetTracerProvider().Tracer("test").Start(c.Request.Context(), "test-span") + defer span.End() + c.Request = c.Request.WithContext(ctx) + + originalCtx := c.Request.Context() + + // Call GetOrGenTraceID + traceID := GetOrGenTraceID(c) + + // Verify traceID matches Span ID + // Note: In test environment with no-op tracer, ID might be empty/zeros or generated differently depending on provider. + // But GetOrGenTraceIDFromContext extracts it. + // If span.SpanContext().TraceID() is valid, GetOrGenTraceID should return it. + // However, the default global tracer might be NoOp which returns invalid TraceID. + // Let's check if span has ID. + if span.SpanContext().HasTraceID() { + assert.Equal(t, span.SpanContext().TraceID().String(), traceID) + } + + // Verify Context IS modified (wrapped with our internal key) + // If we hadn't removed the 'if !spanCtx.HasTraceID()' check, this would be Equal (no wrapping) + // Note: assert.NotEqual checks for equality. Context wrapping creates a new struct. + assert.NotEqual(t, originalCtx, c.Request.Context(), "Context should be wrapped with traceID even if OTEL span exists") + + // Verify we can get it back via GetTraceIDFromContext using the wrapper + gotID, _ := GetTraceIDFromContext(c.Request.Context()) + assert.Equal(t, traceID, gotID) +} diff --git a/component/code.go b/component/code.go index 25144b12e..a164f4b19 100644 --- a/component/code.go +++ b/component/code.go @@ -304,7 +304,7 @@ func (c *codeComponentImpl) Delete(ctx context.Context, namespace, name, current UserUUID: repo.User.UUID, } if err = c.repoComponent.SendAssetManagementMsg(notificationCtx, repoNotificationReq); err != nil { - slog.Error("failed to send asset management notification message", slog.Any("req", repoNotificationReq), slog.Any("err", err)) + slog.ErrorContext(ctx, "failed to send asset management notification message", slog.Any("req", repoNotificationReq), slog.Any("err", err)) } }() @@ -453,7 +453,7 @@ func (c *codeComponentImpl) OrgCodes(ctx context.Context, req *types.OrgCodesReq r, err = c.userSvcClient.GetMemberRole(ctx, req.Namespace, req.CurrentUser) // log error, and treat user as unknown role in org if err != nil { - slog.Error("faild to get member role", + slog.ErrorContext(ctx, "faild to get member role", slog.String("org", req.Namespace), slog.String("user", req.CurrentUser), slog.String("error", err.Error())) } @@ -462,7 +462,7 @@ func (c *codeComponentImpl) OrgCodes(ctx context.Context, req *types.OrgCodesReq codes, total, err := c.codeStore.ByOrgPath(ctx, req.Namespace, req.PageSize, req.Page, onlyPublic) if err != nil { newError := fmt.Errorf("failed to get org codes,error:%w", err) - slog.Error(newError.Error()) + slog.ErrorContext(ctx, newError.Error()) return nil, 0, newError } diff --git a/runner/component/imagebuilder.go b/runner/component/imagebuilder.go index 705bba422..1b63c9671 100644 --- a/runner/component/imagebuilder.go +++ b/runner/component/imagebuilder.go @@ -65,7 +65,7 @@ func NewImagebuilderComponent(ctx context.Context, } if err := workFlowInit(ctx, config, clusterPool); err != nil { - slog.Error("failed to init workflow", slog.Any("error", err)) + slog.ErrorContext(ctx, "failed to init workflow", slog.Any("error", err)) return nil, err } @@ -107,7 +107,7 @@ func (ibc *imagebuilderComponentImpl) Build(ctx context.Context, req ctypes.Imag wft, err := wfTemplateForImageBuilder(ibc.config, req, imagePath, cInfo.StorageClass, createWorkflowName) if err != nil { - slog.Error("failed to create imagebuilder workflow template", "err", err) + slog.ErrorContext(ctx, "failed to create imagebuilder workflow template", "err", err) return fmt.Errorf("failed to create imagebuilder workflow template: %w", err) } @@ -192,7 +192,7 @@ func workFlowInit(ctx context.Context, config *config.Config, clusterPool *clust FileContent: data, } if err := createOrUpdateConfigMap(ctx, cluster.Client, cmd); err != nil { - slog.Error(fmt.Sprintf("failed to create %s configmap", cfg.FileName), "err", err) + slog.ErrorContext(ctx, fmt.Sprintf("failed to create %s configmap", cfg.FileName), "err", err) continue } @@ -218,21 +218,21 @@ func (ibc *imagebuilderComponentImpl) workInformer(ctx context.Context, cluster wf := obj.(*v1alpha1.Workflow) err := ibc.updateImagebuilderWork(ctx, cluster, wf) if err != nil && !errors.Is(err, sql.ErrNoRows) { - slog.Error("fail to add imagebuilder task", slog.Any("error", err), slog.Any("work_name", wf.Name)) + slog.ErrorContext(ctx, "fail to add imagebuilder task", slog.Any("error", err), slog.Any("work_name", wf.Name)) } }, UpdateFunc: func(oldObj, newObj interface{}) { newWF := newObj.(*v1alpha1.Workflow) err := ibc.updateImagebuilderWork(ctx, cluster, newWF) if err != nil && !errors.Is(err, sql.ErrNoRows) { - slog.Error("fail to update imagebuilder task", slog.Any("error", err), slog.Any("work_name", newWF.Name)) + slog.ErrorContext(ctx, "fail to update imagebuilder task", slog.Any("error", err), slog.Any("work_name", newWF.Name)) } }, DeleteFunc: func(obj interface{}) { wf := obj.(*v1alpha1.Workflow) err := ibc.updateImagebuilderWork(ctx, cluster, wf) if err != nil { - slog.Error("fail to delete imagebuilder task", slog.Any("error", err), slog.Any("work_name", wf.Name)) + slog.ErrorContext(ctx, "fail to delete imagebuilder task", slog.Any("error", err), slog.Any("work_name", wf.Name)) } }, } diff --git a/runner/handler/service.go b/runner/handler/service.go index 2b182280e..e0aaa14ea 100644 --- a/runner/handler/service.go +++ b/runner/handler/service.go @@ -41,7 +41,7 @@ func (s *K8sHandler) RunService(c *gin.Context) { request := &types.SVCRequest{} err := c.BindJSON(&request) if err != nil { - slog.Error("runService get bad request", slog.Any("error", err), slog.Any("req", request)) + slog.ErrorContext(c.Request.Context(), "runService get bad request", slog.Any("error", err), slog.Any("req", request)) c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) return } @@ -62,7 +62,7 @@ func (s *K8sHandler) StopService(c *gin.Context) { err := c.BindJSON(request) if err != nil { - slog.Error("stop service get bad request", slog.Any("error", err), slog.Any("req", request)) + slog.ErrorContext(c.Request.Context(), "stop service get bad request", slog.Any("error", err), slog.Any("req", request)) c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) return } @@ -70,7 +70,7 @@ func (s *K8sHandler) StopService(c *gin.Context) { request.SvcName = svcName resp, err := s.serviceComponent.StopService(c.Request.Context(), *request) if err != nil { - slog.Error("failed to stop service", slog.Any("error", err), slog.Any("req", request)) + slog.ErrorContext(c.Request.Context(), "failed to stop service", slog.Any("error", err), slog.Any("req", request)) c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) return } @@ -87,7 +87,7 @@ func (s *K8sHandler) UpdateService(c *gin.Context) { err := c.BindJSON(request) if err != nil { - slog.Error("updateService get bad request", slog.Any("error", err), slog.Any("req", request)) + slog.ErrorContext(c.Request.Context(), "updateService get bad request", slog.Any("error", err), slog.Any("req", request)) c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) return } @@ -95,7 +95,7 @@ func (s *K8sHandler) UpdateService(c *gin.Context) { request.SvcName = svcName resp, err := s.serviceComponent.UpdateService(c.Request.Context(), *request) if err != nil { - slog.Error("failed to update service", slog.Any("error", err), slog.Any("req", request)) + slog.ErrorContext(c.Request.Context(), "failed to update service", slog.Any("error", err), slog.Any("req", request)) c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) } slog.Info("service updated", slog.String("svc_name", svcName)) @@ -108,7 +108,7 @@ func (s *K8sHandler) ServiceStatus(c *gin.Context) { var request = &types.StatusRequest{} err := c.BindJSON(request) if err != nil { - slog.Error("serviceStatus get bad request", slog.Any("error", err), slog.Any("req", request)) + slog.ErrorContext(c.Request.Context(), "serviceStatus get bad request", slog.Any("error", err), slog.Any("req", request)) c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) return } @@ -122,7 +122,7 @@ func (s *K8sHandler) ServiceStatus(c *gin.Context) { c.JSON(http.StatusOK, resp) return } - slog.Error("failed to get service", slog.Any("error", err), slog.String("svc_name", svcName)) + slog.ErrorContext(c.Request.Context(), "failed to get service", slog.Any("error", err), slog.String("svc_name", svcName)) c.JSON(http.StatusInternalServerError, gin.H{"error": "failed to get service"}) return } @@ -134,20 +134,20 @@ func (s *K8sHandler) ServiceLogs(c *gin.Context) { err := c.BindJSON(request) if err != nil { - slog.Error("get bad request", slog.Any("error", err), slog.Any("req", request)) + slog.ErrorContext(c.Request.Context(), "get bad request", slog.Any("error", err), slog.Any("req", request)) c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) return } cluster, err := s.clusterPool.GetClusterByID(c, request.ClusterID) if err != nil { - slog.Error("fail to get cluster ", slog.Any("error", err)) + slog.ErrorContext(c.Request.Context(), "fail to get cluster ", slog.Any("error", err)) c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) return } svcName := s.getServiceNameFromRequest(c) podNames, err := s.serviceComponent.GetServicePods(c.Request.Context(), cluster, svcName, s.k8sNameSpace, 1) if err != nil { - slog.Error("failed to read image logs, cannot get pods info", slog.Any("error", err), slog.String("svc_name", svcName)) + slog.ErrorContext(c.Request.Context(), "failed to read image logs, cannot get pods info", slog.Any("error", err), slog.String("svc_name", svcName)) c.JSON(http.StatusInternalServerError, gin.H{"error": "failed to get pods info"}) return } @@ -163,13 +163,13 @@ func (s *K8sHandler) ServiceLogsByPod(c *gin.Context) { err := c.BindJSON(request) if err != nil { - slog.Error("serviceLogs get bad request", slog.Any("error", err), slog.Any("req", request)) + slog.ErrorContext(c.Request.Context(), "serviceLogs get bad request", slog.Any("error", err), slog.Any("req", request)) c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) return } cluster, err := s.clusterPool.GetClusterByID(c, request.ClusterID) if err != nil { - slog.Error("fail to get cluster ", slog.Any("error", err)) + slog.ErrorContext(c.Request.Context(), "fail to get cluster ", slog.Any("error", err)) c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) return } @@ -186,7 +186,7 @@ func (s *K8sHandler) getLogsByPod(c *gin.Context, cluster *cluster.Cluster, podN if len(podName) > 0 { exist, err = s.serviceComponent.PodExist(c.Request.Context(), cluster, podName) if err != nil { - slog.Error("check pod existence", slog.Any("namespace", s.k8sNameSpace), slog.Any("pod-name", podName), + slog.ErrorContext(c.Request.Context(), "check pod existence", slog.Any("namespace", s.k8sNameSpace), slog.Any("pod-name", podName), slog.Any("clusterID", cluster.ID), slog.Any("error", err)) c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to check pod existence"}) return @@ -205,7 +205,7 @@ func (s *K8sHandler) readPodLogsFromDB(c *gin.Context, cluster *cluster.Cluster, slog.Any("svcname", svcName), slog.Any("clusterID", cluster.ID)) logs, err := s.serviceComponent.GetPodLogsFromDB(c.Request.Context(), cluster, podName, svcName) if err != nil { - slog.Error("failed to read pod logs from db", + slog.ErrorContext(c.Request.Context(), "failed to read pod logs from db", slog.Any("namespace", s.k8sNameSpace), slog.String("pod-name", podName), slog.Any("svcname", svcName), slog.Any("error", err)) logs = "no any logs found for the service" @@ -215,7 +215,7 @@ func (s *K8sHandler) readPodLogsFromDB(c *gin.Context, cluster *cluster.Cluster, _, err = c.Writer.Write([]byte(logs)) if err != nil { - slog.Error("write pod log msg failed", + slog.ErrorContext(c.Request.Context(), "write pod log msg failed", slog.Any("namespace", s.k8sNameSpace), slog.Any("pod-name", podName), slog.Any("clusterID", cluster.ID), slog.Any("error", err)) } @@ -227,7 +227,7 @@ func (s *K8sHandler) readPodLogsFromCluster(c *gin.Context, cluster *cluster.Clu slog.Any("svcname", svcName), slog.Any("clusterID", cluster.ID)) ch, message, err := rcommon.GetPodLogStream(c, cluster.Client, podName, s.k8sNameSpace, rTypes.UserContainerName) if err != nil { - slog.Error("Failed to open stream", slog.Any("error", err)) + slog.ErrorContext(c.Request.Context(), "Failed to open stream", slog.Any("error", err)) c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to open stream"}) return } @@ -249,7 +249,7 @@ func (s *K8sHandler) readPodLogsFromCluster(c *gin.Context, cluster *cluster.Clu if message != "" { _, err = c.Writer.Write([]byte(message)) if err != nil { - slog.Error("write pod message data failed", slog.Any("svcName", svcName), + slog.ErrorContext(c.Request.Context(), "write pod message data failed", slog.Any("svcName", svcName), slog.Any("namespace", s.k8sNameSpace), slog.Any("pod-name", podName), slog.Any("clusterID", cluster.ID), slog.Any("error", err)) } @@ -261,7 +261,7 @@ func (s *K8sHandler) readPodLogsFromCluster(c *gin.Context, cluster *cluster.Clu for log := range ch { _, err := c.Writer.Write(log) if err != nil { - slog.Error("write pod log data failed", slog.Any("svcName", svcName), + slog.ErrorContext(c.Request.Context(), "write pod log data failed", slog.Any("svcName", svcName), slog.Any("namespace", s.k8sNameSpace), slog.Any("pod-name", podName), slog.Any("clusterID", cluster.ID), slog.Any("error", err)) } @@ -290,7 +290,7 @@ func (s *K8sHandler) GetServiceByName(c *gin.Context) { var request = &types.CheckRequest{} err := c.BindJSON(request) if err != nil { - slog.Error("fail to parse input parameters", slog.Any("error", err)) + slog.ErrorContext(c.Request.Context(), "fail to parse input parameters", slog.Any("error", err)) resp.Code = -1 resp.Message = "fail to parse input parameters" c.JSON(http.StatusOK, resp) @@ -325,20 +325,20 @@ func (s *K8sHandler) GetReplica(c *gin.Context) { var request = &types.StatusRequest{} err := c.BindJSON(request) if err != nil { - slog.Error("fail to parse input parameters", slog.Any("error", err)) + slog.ErrorContext(c.Request.Context(), "fail to parse input parameters", slog.Any("error", err)) c.JSON(http.StatusInternalServerError, gin.H{"error": "fail to parse input parameters"}) return } svcName := s.getServiceNameFromRequest(c) svc, err := s.serviceComponent.GetServiceByName(c.Request.Context(), svcName, request.ClusterID) if err != nil && !errors.Is(err, sql.ErrNoRows) { - slog.Error("fail to get service", slog.Any("error", err)) + slog.ErrorContext(c.Request.Context(), "fail to get service", slog.Any("error", err)) c.JSON(http.StatusInternalServerError, gin.H{"error": "fail to get service"}) return } if svc == nil { // service not exist - slog.Error("service not exist") + slog.ErrorContext(c.Request.Context(), "service not exist") c.JSON(http.StatusNotFound, gin.H{"error": "service not exist"}) return } @@ -357,7 +357,7 @@ func (s *K8sHandler) UpdateCluster(c *gin.Context) { var request = &database.ClusterInfo{} err := c.BindJSON(request) if err != nil { - slog.Error("fail to parse input parameters", slog.Any("error", err)) + slog.ErrorContext(c.Request.Context(), "fail to parse input parameters", slog.Any("error", err)) resp.Code = -1 resp.Message = "fail to parse input parameters" c.JSON(http.StatusBadRequest, resp) @@ -365,7 +365,7 @@ func (s *K8sHandler) UpdateCluster(c *gin.Context) { } err = s.clusterPool.ClusterStore.Update(c, *request) if err != nil { - slog.Error("fail to update cluster", slog.Any("error", err)) + slog.ErrorContext(c.Request.Context(), "fail to update cluster", slog.Any("error", err)) resp.Code = -1 resp.Message = "fail to update cluster" c.JSON(http.StatusInternalServerError, resp) @@ -381,7 +381,7 @@ func (s *K8sHandler) PurgeService(c *gin.Context) { var request = &types.PurgeRequest{} err := c.BindJSON(request) if err != nil { - slog.Error("fail to parse input parameters", slog.Any("error", err)) + slog.ErrorContext(c.Request.Context(), "fail to parse input parameters", slog.Any("error", err)) resp.Code = -1 resp.Message = "fail to parse cluster id" c.JSON(http.StatusBadRequest, resp) @@ -391,7 +391,7 @@ func (s *K8sHandler) PurgeService(c *gin.Context) { request.SvcName = svcName resp, err = s.serviceComponent.PurgeService(c.Request.Context(), *request) if err != nil { - slog.Error("fail to purge service", slog.Any("error", err)) + slog.ErrorContext(c.Request.Context(), "fail to purge service", slog.Any("error", err)) c.JSON(http.StatusInternalServerError, resp) return } @@ -405,7 +405,7 @@ func (s *K8sHandler) GetServiceInfo(c *gin.Context) { var request = &types.ServiceRequest{} err := c.BindJSON(request) if err != nil { - slog.Error("fail to parse input parameters", slog.Any("error", err)) + slog.ErrorContext(c.Request.Context(), "fail to parse input parameters", slog.Any("error", err)) c.JSON(http.StatusInternalServerError, gin.H{"error": "fail to parse input parameters"}) return } @@ -414,7 +414,7 @@ func (s *K8sHandler) GetServiceInfo(c *gin.Context) { request.ServiceName = svcName resp, err := s.serviceComponent.GetServiceInfo(c.Request.Context(), *request) if err != nil { - slog.Error("fail to get service info", slog.Any("error", err)) + slog.ErrorContext(c.Request.Context(), "fail to get service info", slog.Any("error", err)) c.JSON(http.StatusInternalServerError, gin.H{"error": "fail to get service info"}) return } diff --git a/user/router/api.go b/user/router/api.go index 1ca93e2b5..5b0e856b0 100644 --- a/user/router/api.go +++ b/user/router/api.go @@ -165,7 +165,7 @@ func userMatch() gin.HandlerFunc { userName := ctx.Param("username") if userName != currentUser { httpbase.UnauthorizedError(ctx, errorx.ErrUserNotMatch) - slog.Error("user not match, try to query user account not owned", "currentUser", currentUser, "userName", userName) + slog.ErrorContext(ctx.Request.Context(), "user not match, try to query user account not owned", "currentUser", currentUser, "userName", userName) ctx.Abort() return }