完善日志和审计链路

This commit is contained in:
yml
2026-06-02 21:40:23 +08:00
parent 1325c8fb89
commit 6dcea2d56c
20 changed files with 243 additions and 90 deletions
+28 -3
View File
@@ -1,6 +1,7 @@
package middleware
import (
"strings"
"time"
"github.com/gin-gonic/gin"
@@ -12,12 +13,36 @@ func RequestLogger(logger *zap.Logger) gin.HandlerFunc {
start := time.Now()
c.Next()
logger.Info("http request",
latency := time.Since(start)
fields := []zap.Field{
zap.String("request_id", GetRequestID(c)),
zap.String("method", c.Request.Method),
zap.String("path", c.Request.URL.Path),
zap.String("route", c.FullPath()),
zap.Int("status", c.Writer.Status()),
zap.Duration("latency", time.Since(start)),
zap.Float64("latency_ms", float64(latency.Microseconds())/1000),
zap.String("client_ip", c.ClientIP()),
)
zap.String("user_agent", c.GetHeader("User-Agent")),
zap.String("referer", c.GetHeader("Referer")),
zap.Int("response_size", c.Writer.Size()),
}
if userID, ok := c.Get(ContextUserID); ok {
fields = append(fields, zap.Any("user_id", userID))
}
if adminID, ok := c.Get(ContextAdminID); ok {
fields = append(fields, zap.Any("admin_id", adminID))
}
if len(c.Errors) > 0 {
fields = append(fields, zap.String("errors", strings.TrimSpace(c.Errors.String())))
}
switch {
case c.Writer.Status() >= 500:
logger.Error("http request", fields...)
case c.Writer.Status() >= 400:
logger.Warn("http request", fields...)
default:
logger.Info("http request", fields...)
}
}
}