2 Star 0 Fork 0

TeamsHub/backend-gopkg

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
ginLog.go 4.78 KB
一键复制 编辑 原始数据 按行查看 历史
HCY 提交于 2024-07-26 11:25 . v1.5.14
package ginlog
import (
"gitee.com/wuzheng0709/backend-gopkg/infrastructure/pkg/gin/middleware"
"github.com/gin-gonic/gin"
"time"
)
func GinLogger() gin.HandlerFunc {
return func(c *gin.Context) {
// 开始时间
start := time.Now()
// 处理请求
c.Next()
// 结束时间
end := time.Now()
//执行时间
latency := end.Sub(start)
path := c.Request.URL.Path
clientIP := middleware.GetRealIp(c)
method := c.Request.Method
statusCode := c.Writer.Status()
logger.Infof("| %3d | %13v | %15s | %s %s |",
statusCode,
latency,
clientIP,
method, path,
)
}
}
type InterfaceTransferLog struct {
Status int `gorm:"column:status;type:int(3);not null;comment:'http状态码'" json:"status"` // http状态码
Method string `gorm:"column:method;type:varchar(32);not null;comment:'http方法'" json:"method"` // http方法
Path string `gorm:"column:path;type:varchar(255);not null;comment:'路径'" json:"path"` // 路径
Query string `gorm:"column:query;type:varchar(255);not null;comment:'参数'" json:"query"` // 参数
IP string `gorm:"column:ip;type:varchar(32);not null;comment:'用户IP'" json:"ip"` // 用户IP
UserAgent string `gorm:"column:user_agent;type:varchar(255);not null;comment:'客户端'" json:"user_agent"` // 客户端
Errors string `gorm:"column:errors;type:text;not null;comment:'错误信息'" json:"errors"` // 错误信息
Latency int `gorm:"column:latency;type:int(32);not null;comment:'延迟(单位:毫秒)'" json:"latency"` // 延迟(单位:毫秒)
UserID int64 `gorm:"column:user_id;type:bigint(10);not null;comment:'用户id'" json:"user_id"` // 用户id
RealName string `gorm:"column:real_name;type:varchar(64);not null;comment:'真实姓名'" json:"real_name"` // 真实姓名
Username string `gorm:"column:username;type:varchar(32);not null;comment:'用户名'" json:"username"` // 用户名
Param string `gorm:"column:param;type:text;default:null;comment:'请求body信息'" json:"param"` // 请求body信息
ResBody string `gorm:"column:res_body;type:text;default:null;comment:'请求body信息'" json:"res_body"` // 请求body信息
LogType string `json:"log_type"` // 日志类型
}
//func GinLoggerV2() gin.HandlerFunc {
// return func(c *gin.Context) {
// start := time.Now()
// path := c.Request.URL.Path
// query := c.Request.URL.RawQuery
// reqBodyByte, _ := io.ReadAll(c.Request.Body)
// c.Request.Body = io.NopCloser(bytes.NewBuffer(reqBodyByte))
// token := c.Request.Header.Get("token")
// logDb := InterfaceTransferLog{}
// customClaims, _ := jwt.ParseToken(token)
// if customClaims == nil {
// logDb.UserID = 0
// } else {
// logDb.UserID = toolfunc.String2Int64(customClaims.UID)
// }
// var user entity.UserInfo
// user.UserID = logDb.UserID
// if logDb.UserID != 0 {
// orm.GetMysqlDB().Model(entity.UserInfo{}).Where("user_id = ?", logDb.UserID).First(&user)
// c.Header("UserName", user.Username)
// c.Header("RealName", user.RealName)
// c.Header("UserId", strconv.FormatInt(user.UserID, 10))
// }
//
// // 设置相关变量
// c.Set(USER_REALNAME_KEY, user.RealName)
// c.Set(USER_USERNAME_KEY, user.Username)
// c.Set("ecmAccount", user.Username)
// if user.Usertype != 1 {
// c.Set("ecmAccount", "hpdiFile")
// }
//
// //logger := zap.L()
// resWrrite := PrintResponse(c)
// c.Next()
// if path != "/" {
//
// // 生成的日志信息
// latency := time.Since(start)
// //logger.Info(path,
// // zap.Int("status", c.Writer.Status()),
// // zap.String("method", c.Request.Method),
// // zap.String("path", path),
// // zap.String("query", query),
// // zap.String("ip", c.Request.Header.Get("X-Real-IP")),
// // zap.String("user-agent", c.Request.UserAgent()),
// // zap.String("errors", c.Errors.ByType(gin.ErrorTypePrivate).String()),
// // zap.Duration("latency", latency),
// //)
//
// // 写入数据库中
// logDb.Status = c.Writer.Status()
// logDb.Method = c.Request.Method
// logDb.Path = path
// logDb.Query = query
// logDb.IP = c.Request.Header.Get("X-Real-IP")
// logDb.UserAgent = c.Request.UserAgent()
// logDb.Errors = c.Errors.ByType(gin.ErrorTypePrivate).String()
// logDb.Latency = int(latency.Milliseconds())
// logDb.Username = user.Username
// logDb.RealName = user.RealName
// logDb.Param = string(reqBodyByte)
// logDb.ResBody = resWrrite.b.String()
//
// //if err := orm.GetMysqlDB().Create(&logDb).Error; err != nil {
// // logger.Error("上条日志写入数据库失败:,报错信息为:" + err.Error())
// //}
// //log.Info(logDb)
// logDbByte, _ := json.Marshal(logDb)
// log.Info(string(logDbByte))
// }
// }
//}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/wuzheng0709/backend-gopkg.git
git@gitee.com:wuzheng0709/backend-gopkg.git
wuzheng0709
backend-gopkg
backend-gopkg
v1.5.23

搜索帮助