Files
sc-lktx-mp/sc-lktx-backend/internal/common/middleware/logger.go
huangjin fe3ad20fe2 'init'
2026-06-29 17:34:59 +08:00

32 lines
801 B
Go

package middleware
import (
"time"
"github.com/gin-gonic/gin"
"go.uber.org/zap"
)
// Logger 请求日志中间件,记录每个请求的方法、路径、状态码、耗时
// 在 c.Next() 前后分别记录开始和结束时间
func Logger(logger *zap.Logger) gin.HandlerFunc {
return func(c *gin.Context) {
start := time.Now()
path := c.Request.URL.Path
query := c.Request.URL.RawQuery
c.Next() // 执行后续中间件和 Handler
cost := time.Since(start)
logger.Info("HTTP Request",
zap.Int("status", c.Writer.Status()),
zap.String("method", c.Request.Method),
zap.String("path", path),
zap.String("query", query),
zap.String("ip", c.ClientIP()),
zap.Duration("cost", cost),
zap.String("errors", c.Errors.ByType(gin.ErrorTypePrivate).String()),
)
}
}