测试一下修复一部分问题

This commit is contained in:
2025-11-11 18:15:39 +08:00
parent 2b1754728f
commit ea0c6a8b16
7 changed files with 234 additions and 34 deletions

View File

@@ -8,14 +8,39 @@ import (
"go.uber.org/zap"
)
const (
// MaxBodyLogSize 限制记录的请求/响应 body 大小为 50KB
MaxBodyLogSize = 50 * 1024
)
// truncateBody 截断 body 到指定大小
func truncateBody(body []byte, maxSize int) string {
if len(body) == 0 {
return ""
}
if len(body) <= maxSize {
return string(body)
}
// 超过限制,截断并添加提示
return string(body[:maxSize]) + "... (truncated)"
}
// Middleware 创建 Fiber 日志中间件
// 记录所有 HTTP 请求到访问日志
// 记录所有 HTTP 请求到访问日志(包括请求和响应 body
func Middleware() fiber.Handler {
return func(c *fiber.Ctx) error {
// 记录请求开始时间
startTime := time.Now()
c.Locals(constants.ContextKeyStartTime, startTime)
// 获取请求 body在 c.Next() 之前读取)
requestBody := truncateBody(c.Body(), MaxBodyLogSize)
// 获取 query 参数
queryParams := string(c.Request().URI().QueryString())
// 处理请求
err := c.Next()
@@ -34,17 +59,23 @@ func Middleware() fiber.Handler {
userID = uid.(string)
}
// 获取响应 body
responseBody := truncateBody(c.Response().Body(), MaxBodyLogSize)
// 记录访问日志
accessLogger := GetAccessLogger()
accessLogger.Info("",
zap.String("method", c.Method()),
zap.String("path", c.Path()),
zap.String("query", queryParams),
zap.Int("status", c.Response().StatusCode()),
zap.Float64("duration_ms", float64(duration.Microseconds())/1000.0),
zap.String("request_id", requestID),
zap.String("ip", c.IP()),
zap.String("user_agent", c.Get("User-Agent")),
zap.String(constants.ContextKeyUserID, userID),
zap.String("request_body", requestBody),
zap.String("response_body", responseBody),
)
return err