- 新增模块化日志器(pkg/logger/module.go) - 新增 GORM 日志适配器 - 统一日志入口,移除所有 zap.L() 全局 logger 调用 - 字段标准化 - 启动阶段使用结构化日志 - 更新所有相关测试
47 lines
953 B
Go
47 lines
953 B
Go
package middleware
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
"go.uber.org/zap"
|
|
|
|
pkglogger "nex/backend/pkg/logger"
|
|
)
|
|
|
|
func Logging(logger *zap.Logger) gin.HandlerFunc {
|
|
return func(c *gin.Context) {
|
|
start := time.Now()
|
|
path := c.Request.URL.Path
|
|
query := c.Request.URL.RawQuery
|
|
|
|
requestID, _ := c.Get(RequestIDKey)
|
|
var requestIDStr string
|
|
if id, ok := requestID.(string); ok {
|
|
requestIDStr = id
|
|
}
|
|
|
|
logger.Info("请求开始",
|
|
pkglogger.Method(c.Request.Method),
|
|
pkglogger.Path(path),
|
|
pkglogger.Query(query),
|
|
pkglogger.ClientIP(c.ClientIP()),
|
|
pkglogger.RequestID(requestIDStr),
|
|
)
|
|
|
|
c.Next()
|
|
|
|
latency := time.Since(start)
|
|
statusCode := c.Writer.Status()
|
|
|
|
logger.Info("请求结束",
|
|
pkglogger.StatusCode(statusCode),
|
|
pkglogger.Method(c.Request.Method),
|
|
pkglogger.Path(path),
|
|
pkglogger.Latency(latency),
|
|
pkglogger.BodySize(c.Writer.Size()),
|
|
pkglogger.RequestID(requestIDStr),
|
|
)
|
|
}
|
|
}
|