// =========================================== // 多班级版班级管理系统 - Go 后端 // // 开发者: Canglan // 联系方式: admin@sea-studio.top // 版权归属: Sea Network Technology Studio // 许可证: Apache License 2.0 // // 版权所有 © Sea Network Technology Studio // =========================================== package middleware import ( "time" "github.com/gin-gonic/gin" "hz-gitea.sea-studio.top/canglan/SharedClassManager/pkg/logger" ) // AccessLog 访问日志中间件 func AccessLog() gin.HandlerFunc { return func(c *gin.Context) { start := time.Now() path := c.Request.URL.Path query := c.Request.URL.RawQuery // 处理请求 c.Next() latency := time.Since(start) status := c.Writer.Status() clientIP := c.ClientIP() method := c.Request.Method userAgent := c.Request.UserAgent() if query != "" { path = path + "?" + query } // 获取用户信息(如已认证) userID, _ := c.Get(CtxUserID) username, _ := c.Get(CtxUsername) logger.Sugared.Infow("请求日志", "status", status, "method", method, "path", path, "ip", clientIP, "latency", latency.String(), "user_agent", userAgent, "user_id", userID, "username", username, ) } }