first commit

This commit is contained in:
何昌清
2026-03-26 22:13:03 +08:00
parent bbe1faa363
commit a2685f7f1e
51 changed files with 11244 additions and 0 deletions

72
middle/middle_logger.go Normal file
View File

@@ -0,0 +1,72 @@
// Package middle middle_logger.go
package middle
import (
"bytes"
"fmt"
"io"
"log"
"time"
"github.com/gin-gonic/gin"
)
func RequestResponseLogger() gin.HandlerFunc {
return func(ctx *gin.Context) {
// 保存原始请求体
var bodyBytes []byte
if ctx.Request.Body != nil {
bodyBytes, _ = io.ReadAll(ctx.Request.Body)
// 恢复请求体,供后续处理使用
ctx.Request.Body = io.NopCloser(bytes.NewBuffer(bodyBytes))
}
// 获取查询参数
queryParams := ctx.Request.URL.Query().Encode()
// 获取请求头信息
var headers string
Token := ctx.GetHeader("X-Access-Token")
headers = fmt.Sprintf("X-Access-Token: %s; ", Token)
// 记录开始时间
startTime := time.Now()
// 继续处理请求
ctx.Next()
// 计算处理时间
latency := time.Since(startTime)
// 格式化日志内容
timestamp := time.Now().Format("2006/01/02 15:04:05")
// 格式化日志内容
logMessage := fmt.Sprintf("[GIN] Request | %3d | %13v | %15s | %-7s %s",
ctx.Writer.Status(),
latency,
ctx.ClientIP(),
ctx.Request.Method,
ctx.Request.URL.Path,
)
// 单独打印查询参数(带时间戳)
if queryParams != "" {
logMessage += fmt.Sprintf("\n%s [GIN] Params: %s", timestamp, queryParams)
}
// 单独打印请求体(带时间戳)
if len(bodyBytes) > 0 {
logMessage += fmt.Sprintf("\n%s [GIN] Body: %s", timestamp, string(bodyBytes))
}
// 单独打印请求头(带时间戳)
if headers != "" {
logMessage += fmt.Sprintf("\n%s [GIN] Headers: %s", timestamp, headers)
}
// 输出到控制台
log.Println(logMessage)
}
}