ソースを参照

Merge branch 'fix/log' into debug

Roc 4 ヶ月 前
コミット
ea6eb6e021
5 ファイル変更104 行追加16 行削除
  1. 2 12
      controller/response/base.go
  2. 3 1
      init_serve/router.go
  3. 59 2
      middleware/common.go
  4. 4 1
      middleware/token.go
  5. 36 0
      utils/gin.go

+ 2 - 12
controller/response/base.go

@@ -27,16 +27,7 @@ type ResultData struct {
 
 func result(code int, resultData ResultData, c *gin.Context) {
 	jsonByte, _ := json.Marshal(resultData)
-	token := c.Request.Header.Get("Authorization")
-	if token == "" {
-		token = c.DefaultQuery("authorization", "")
-		if token == "" {
-			token = c.DefaultQuery("Authorization", "")
-		}
-	}
-	logSlice := make([]string, 0)
-	logSlice = append(logSlice, fmt.Sprint("Url:", c.Request.RequestURI))
-	logSlice = append(logSlice, fmt.Sprint("Token:", token))
+	logSlice := utils.GetBridgeLogListByClaims(c)
 	logSlice = append(logSlice, fmt.Sprint("resultData:", string(jsonByte)))
 
 	//记录错误日志
@@ -44,13 +35,12 @@ func result(code int, resultData ResultData, c *gin.Context) {
 		logSlice = append(logSlice, fmt.Sprint("ErrMsg:", resultData.ErrMsg))
 		//global.LOG.Info(strings.Join(logSlice, ";"))
 	}
+	global.LOG.Info(strings.Join(logSlice, "\n"))
 
 	// 测试环境不加密
 	if global.CONFIG.Serve.RunMode == "debug" {
-		global.LOG.Info(strings.Join(logSlice, ";"))
 		c.JSON(code, resultData)
 	} else {
-		global.LOG.Info(strings.Join(logSlice, ";"))
 		encryptResult := utils.DesBase64Encrypt(jsonByte)
 		c.JSON(code, string(encryptResult))
 	}

+ 3 - 1
init_serve/router.go

@@ -22,7 +22,9 @@ func InitRouter() (r *gin.Engine) {
 	r.Use(middleware.Recover())
 
 	// 公共的中间件
-	r.Use(middleware.Common())
+	common := middleware.Common{}
+	r.Use(common.RequestLog)
+	r.Use(common.Page)
 
 	//swagger界面访问地址
 	r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))

+ 59 - 2
middleware/common.go

@@ -1,12 +1,69 @@
 package middleware
 
 import (
+	"bytes"
+	"fmt"
 	"github.com/gin-gonic/gin"
+	"hongze/hongze_yb/utils"
+	"io"
+	"net/http"
 	"strconv"
 )
 
-// Common 公共中间件
-func Common() gin.HandlerFunc {
+type Common struct{}
+
+// RequestLog
+// @Description: 请求参数日志
+// @author: Roc
+// @receiver common
+// @datetime 2024-10-31 10:19:36
+// @param c *gin.Context
+func (common *Common) RequestLog(c *gin.Context) {
+	// 读取请求体
+	body, err := io.ReadAll(c.Request.Body)
+	if err != nil {
+		//log.Printf("Error reading request body: %v", err)
+		c.AbortWithStatus(http.StatusInternalServerError)
+		return
+	}
+
+	// 将请求地址添加到上下文的日志中
+	utils.SetBridgeLogListByClaims(c, fmt.Sprint("Url:", c.Request.RequestURI))
+	// 将请求参数添加到上下文的日志中
+	utils.SetBridgeLogListByClaims(c, fmt.Sprint("RequestBody:", string(body)))
+
+	// 将请求体恢复到原始状态
+	c.Request.Body = io.NopCloser(bytes.NewBuffer(body))
+
+	c.Next()
+}
+
+// Page
+// @Description: 分页参数
+// @author: Roc
+// @receiver common
+// @datetime 2024-10-31 10:19:36
+// @param c *gin.Context
+func (common *Common) Page(c *gin.Context) {
+	var currPage, pageSize int
+	reqPage := c.DefaultQuery("curr_page", "0")
+	currPage, _ = strconv.Atoi(reqPage)
+	if currPage <= 0 {
+		currPage = 1
+	}
+
+	reqPageSize := c.DefaultQuery("page_size", "0")
+	pageSize, _ = strconv.Atoi(reqPageSize)
+	if pageSize <= 0 {
+		pageSize = 20
+	}
+	c.Set("curr_page", currPage)
+	c.Set("page_size", pageSize)
+	c.Next()
+}
+
+// Common2 公共中间件
+func Common2() gin.HandlerFunc {
 	return func(c *gin.Context) {
 		var currPage, pageSize int
 		reqPage := c.DefaultQuery("curr_page", "0")

+ 4 - 1
middleware/token.go

@@ -1,6 +1,7 @@
 package middleware
 
 import (
+	"fmt"
 	"github.com/gin-gonic/gin"
 	"hongze/hongze_yb/controller/response"
 	"hongze/hongze_yb/models/tables/rddp/session"
@@ -22,6 +23,8 @@ func Token() gin.HandlerFunc {
 			c.Abort()
 			return
 		}
+		utils.SetBridgeLogListByClaims(c, fmt.Sprint("Token:", token))
+
 		sessionInfo, err := session.GetTokenByToken(token)
 		if err != nil {
 			if err == utils.ErrNoRow {
@@ -46,7 +49,7 @@ func Token() gin.HandlerFunc {
 			tmpUserInfo, tmpErr := services.GetWxUserItemByOpenId(sessionInfo.OpenID)
 			userInfo = tmpUserInfo
 			err = tmpErr
-			if err != nil && err != services.ERR_NO_USER_RECORD && err != services.ERR_USER_NOT_BIND{
+			if err != nil && err != services.ERR_NO_USER_RECORD && err != services.ERR_USER_NOT_BIND {
 				response.TokenError(nil, "数据异常!", "openid查询用户信息错误", c)
 				c.Abort()
 				return

+ 36 - 0
utils/gin.go

@@ -0,0 +1,36 @@
+package utils
+
+import "github.com/gin-gonic/gin"
+
+// SetBridgeLogListByClaims
+// @Description: 设置上下文中bridge日志
+// @author: Roc
+// @datetime 2024-10-31 10:55:15
+// @param c *gin.Context
+// @param logStr string
+func SetBridgeLogListByClaims(c *gin.Context, logStr string) {
+	bridgeLogList := GetBridgeLogListByClaims(c)
+	bridgeLogList = append(bridgeLogList, logStr)
+	c.Set("bridge_log", bridgeLogList)
+
+	return
+}
+
+// GetBridgeLogListByClaims
+// @Description: 从Claims中获取当前日志
+// @author: Roc
+// @datetime 2024-10-31 10:35:04
+// @param c *gin.Context
+// @return bridgeLogList []string
+func GetBridgeLogListByClaims(c *gin.Context) (bridgeLogList []string) {
+	//获取jwt数据失败
+	claims, exists := c.Get("bridge_log")
+	// 如果不存在,那么就是空切片
+	if !exists {
+		bridgeLogList = []string{}
+		return
+	}
+	bridgeLogList = claims.([]string)
+
+	return
+}