From e27612a620d0099d81222ce0121724ef4088f351 Mon Sep 17 00:00:00 2001 From: Deadwalk Date: Sun, 28 Sep 2025 16:22:18 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E4=BC=98=E5=8C=96Anthropic?= =?UTF-8?q?=E5=8D=8F=E8=AE=AE=E6=97=A5=E5=BF=97=E8=BE=93=E5=87=BA=20|=20op?= =?UTF-8?q?timize=20Anthropic=20protocol=20log=20output?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 清理不必要的调试日志,减少生产环境噪音 - 将详细日志从Infof降级为Debugf级别 - 保留关键错误日志和重要流程信息 - 优化日志结构,提高可读性和维护性 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- relay/adaptor/anthropic/main.go | 13 +++++-------- relay/controller/anthropic.go | 18 ++++++------------ 2 files changed, 11 insertions(+), 20 deletions(-) diff --git a/relay/adaptor/anthropic/main.go b/relay/adaptor/anthropic/main.go index d1a9afa1..b0d721bb 100644 --- a/relay/adaptor/anthropic/main.go +++ b/relay/adaptor/anthropic/main.go @@ -386,9 +386,7 @@ func Handler(c *gin.Context, resp *http.Response, promptTokens int, modelName st // DirectHandler handles native Anthropic API responses without conversion to OpenAI format func DirectHandler(c *gin.Context, resp *http.Response, promptTokens int, modelName string) (*model.ErrorWithStatusCode, *model.Usage) { ctx := c.Request.Context() - logger.Infof(ctx, "=== DirectHandler Start ===") - logger.Infof(ctx, "Response status: %d", resp.StatusCode) - logger.Infof(ctx, "Response headers: %+v", resp.Header) + logger.Debugf(ctx, "DirectHandler - Response status: %d", resp.StatusCode) responseBody, err := io.ReadAll(resp.Body) if err != nil { @@ -401,7 +399,7 @@ func DirectHandler(c *gin.Context, resp *http.Response, promptTokens int, modelN return openai.ErrorWrapper(err, "close_response_body_failed", http.StatusInternalServerError), nil } - logger.Infof(ctx, "Raw response body: %s", string(responseBody)) + logger.Debugf(ctx, "Raw response body: %s", string(responseBody)) var claudeResponse Response err = json.Unmarshal(responseBody, &claudeResponse) @@ -421,7 +419,7 @@ func DirectHandler(c *gin.Context, resp *http.Response, promptTokens int, modelN return nil, usage } - logger.Infof(ctx, "Parsed response - ID: %s, Model: %s, Usage: %+v", + logger.Debugf(ctx, "Parsed response - ID: %s, Model: %s, Usage: %+v", claudeResponse.Id, claudeResponse.Model, claudeResponse.Usage) if claudeResponse.Error.Type != "" { @@ -444,7 +442,7 @@ func DirectHandler(c *gin.Context, resp *http.Response, promptTokens int, modelN TotalTokens: claudeResponse.Usage.InputTokens + claudeResponse.Usage.OutputTokens, } - logger.Infof(ctx, "Usage calculated: %+v", usage) + logger.Debugf(ctx, "Usage calculated: %+v", usage) // Write the original Anthropic response directly c.Writer.Header().Set("Content-Type", "application/json") @@ -455,8 +453,7 @@ func DirectHandler(c *gin.Context, resp *http.Response, promptTokens int, modelN return openai.ErrorWrapper(err, "write_response_failed", http.StatusInternalServerError), nil } - logger.Infof(ctx, "Response written successfully") - logger.Infof(ctx, "=== DirectHandler End ===") + logger.Debugf(ctx, "Response written successfully") return nil, &usage } diff --git a/relay/controller/anthropic.go b/relay/controller/anthropic.go index 07271300..a0c512bc 100644 --- a/relay/controller/anthropic.go +++ b/relay/controller/anthropic.go @@ -28,10 +28,7 @@ func RelayAnthropicHelper(c *gin.Context) *model.ErrorWithStatusCode { ctx := c.Request.Context() meta := meta.GetByContext(c) - logger.Infof(ctx, "=== Anthropic Request Start ===") - logger.Infof(ctx, "Request URL: %s", c.Request.URL.String()) - logger.Infof(ctx, "Request Method: %s", c.Request.Method) - logger.Infof(ctx, "Request Headers: %+v", c.Request.Header) + logger.Infof(ctx, "Anthropic request received - URL: %s", c.Request.URL.String()) // get & validate anthropic request anthropicRequest, err := getAndValidateAnthropicRequest(c) @@ -39,7 +36,7 @@ func RelayAnthropicHelper(c *gin.Context) *model.ErrorWithStatusCode { logger.Errorf(ctx, "getAndValidateAnthropicRequest failed: %s", err.Error()) return openai.ErrorWrapper(err, "invalid_anthropic_request", http.StatusBadRequest) } - logger.Infof(ctx, "Parsed anthropic request - Model: %s, Stream: %v, Messages: %d", + logger.Debugf(ctx, "Parsed anthropic request - Model: %s, Stream: %v, Messages: %d", anthropicRequest.Model, anthropicRequest.Stream, len(anthropicRequest.Messages)) meta.IsStream = anthropicRequest.Stream @@ -65,14 +62,14 @@ func RelayAnthropicHelper(c *gin.Context) *model.ErrorWithStatusCode { return bizErr } - logger.Infof(ctx, "Meta info - APIType: %d, ChannelType: %d, BaseURL: %s", meta.APIType, meta.ChannelType, meta.BaseURL) + logger.Debugf(ctx, "Meta info - APIType: %d, ChannelType: %d, BaseURL: %s", meta.APIType, meta.ChannelType, meta.BaseURL) adaptor := relay.GetAdaptor(meta.APIType) if adaptor == nil { logger.Errorf(ctx, "Failed to get adaptor for API type: %d", meta.APIType) return openai.ErrorWrapper(fmt.Errorf("invalid api type: %d", meta.APIType), "invalid_api_type", http.StatusBadRequest) } - logger.Infof(ctx, "Using adaptor: %s", adaptor.GetChannelName()) + logger.Debugf(ctx, "Using adaptor: %s", adaptor.GetChannelName()) adaptor.Init(meta) // get request body - for anthropic passthrough, we directly use the request body @@ -82,13 +79,12 @@ func RelayAnthropicHelper(c *gin.Context) *model.ErrorWithStatusCode { } // do request - logger.Infof(ctx, "Sending request to upstream...") resp, err := adaptor.DoRequest(c, meta, requestBody) if err != nil { logger.Errorf(ctx, "DoRequest failed: %s", err.Error()) return openai.ErrorWrapper(err, "do_request_failed", http.StatusInternalServerError) } - logger.Infof(ctx, "Received response - Status: %d, Headers: %+v", resp.StatusCode, resp.Header) + logger.Debugf(ctx, "Received response - Status: %d", resp.StatusCode) if isErrorHappened(meta, resp) { logger.Errorf(ctx, "Error detected in response") @@ -97,7 +93,6 @@ func RelayAnthropicHelper(c *gin.Context) *model.ErrorWithStatusCode { } // do response - for anthropic native requests, we need to handle the response directly - logger.Infof(ctx, "Processing anthropic response...") usage, respErr := handleAnthropicResponse(c, resp, meta) if respErr != nil { logger.Errorf(ctx, "respErr is not nil: %+v", respErr) @@ -105,8 +100,7 @@ func RelayAnthropicHelper(c *gin.Context) *model.ErrorWithStatusCode { return respErr } - logger.Infof(ctx, "Response processed successfully - Usage: %+v", usage) - logger.Infof(ctx, "=== Anthropic Request End ===") + logger.Infof(ctx, "Anthropic request completed - Usage: %+v", usage) // post-consume quota - for anthropic, we create a placeholder GeneralOpenAIRequest placeholderRequest := &model.GeneralOpenAIRequest{