feat: 错误日志记录
This commit is contained in:
@@ -4,6 +4,7 @@ package proxy
|
|||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"context"
|
"context"
|
||||||
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"net/http"
|
"net/http"
|
||||||
@@ -148,7 +149,7 @@ func (ps *ProxyServer) executeRequestWithRetry(c *gin.Context, startTime time.Ti
|
|||||||
|
|
||||||
// Check retry limit
|
// Check retry limit
|
||||||
if retryCount >= keysConfig.MaxRetries {
|
if retryCount >= keysConfig.MaxRetries {
|
||||||
logrus.Errorf("Max retries exceeded (%d)", retryCount)
|
logrus.Debugf("Max retries exceeded (%d)", retryCount)
|
||||||
|
|
||||||
// Return detailed error information
|
// Return detailed error information
|
||||||
errorResponse := gin.H{
|
errorResponse := gin.H{
|
||||||
@@ -288,8 +289,7 @@ func (ps *ProxyServer) executeRequestWithRetry(c *gin.Context, startTime time.Ti
|
|||||||
responseTime := time.Since(startTime)
|
responseTime := time.Since(startTime)
|
||||||
|
|
||||||
// Check if HTTP status code requires retry
|
// Check if HTTP status code requires retry
|
||||||
// 429 (Too Many Requests) and 5xx server errors need retry
|
if resp.StatusCode >= 400 {
|
||||||
if resp.StatusCode == 429 || resp.StatusCode >= 500 {
|
|
||||||
// Log failure
|
// Log failure
|
||||||
if retryCount > 0 {
|
if retryCount > 0 {
|
||||||
logrus.Debugf("Retry request returned error %d (attempt %d) (response time: %v)", resp.StatusCode, retryCount+1, responseTime)
|
logrus.Debugf("Retry request returned error %d (attempt %d) (response time: %v)", resp.StatusCode, retryCount+1, responseTime)
|
||||||
@@ -305,6 +305,18 @@ func (ps *ProxyServer) executeRequestWithRetry(c *gin.Context, startTime time.Ti
|
|||||||
errorMessage = fmt.Sprintf("HTTP %d", resp.StatusCode)
|
errorMessage = fmt.Sprintf("HTTP %d", resp.StatusCode)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var jsonError struct {
|
||||||
|
Error struct {
|
||||||
|
Message string `json:"message"`
|
||||||
|
} `json:"error"`
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := json.Unmarshal([]byte(errorMessage), &jsonError); err == nil && jsonError.Error.Message != "" {
|
||||||
|
logrus.Errorf("Error message: %s", jsonError.Error.Message)
|
||||||
|
} else {
|
||||||
|
logrus.Errorf("Error message: %s", errorMessage)
|
||||||
|
}
|
||||||
|
|
||||||
// Record failure asynchronously
|
// Record failure asynchronously
|
||||||
go ps.keyManager.RecordFailure(keyInfo.Key, fmt.Errorf("HTTP %d", resp.StatusCode))
|
go ps.keyManager.RecordFailure(keyInfo.Key, fmt.Errorf("HTTP %d", resp.StatusCode))
|
||||||
|
|
||||||
@@ -329,7 +341,7 @@ func (ps *ProxyServer) executeRequestWithRetry(c *gin.Context, startTime time.Ti
|
|||||||
|
|
||||||
// Log final success result
|
// Log final success result
|
||||||
if retryCount > 0 {
|
if retryCount > 0 {
|
||||||
logrus.Infof("Request succeeded after %d retries (response time: %v)", retryCount, responseTime)
|
logrus.Debugf("Request succeeded after %d retries (response time: %v)", retryCount, responseTime)
|
||||||
} else {
|
} else {
|
||||||
logrus.Debugf("Request succeeded on first attempt (response time: %v)", responseTime)
|
logrus.Debugf("Request succeeded on first attempt (response time: %v)", responseTime)
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user