From 1dad4b79f57b1ffcde99ba509b61dfca3767ceb2 Mon Sep 17 00:00:00 2001 From: zhaoyupeng Date: Mon, 8 Dec 2025 15:12:06 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E6=9B=B4=E6=96=B0=E4=BA=86=20logger?= =?UTF-8?q?=20middleware?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- middlewares/logger/logger.go | 66 +++++++++++++++++-------------- middlewares/logger/logger_test.go | 5 ++- 2 files changed, 41 insertions(+), 30 deletions(-) diff --git a/middlewares/logger/logger.go b/middlewares/logger/logger.go index abae176..8b09353 100644 --- a/middlewares/logger/logger.go +++ b/middlewares/logger/logger.go @@ -2,17 +2,21 @@ package logger import ( "fmt" - "gitea.loveuer.com/yizhisec/packages/logger" - "gitea.loveuer.com/yizhisec/packages/opt" - "gitea.loveuer.com/yizhisec/packages/tool" - "github.com/gin-gonic/gin" "strings" "sync" "time" + + "gitea.loveuer.com/yizhisec/packages/opt" + "gitea.loveuer.com/yizhisec/packages/tool" + "github.com/fatih/color" + "github.com/gin-gonic/gin" +) + +const ( + defaultTrace = " middleware-logger" ) var ( - defaultTrace = "middleware-logger" stringBuilderPool = sync.Pool{ New: func() interface{} { return &strings.Builder{} @@ -36,38 +40,42 @@ func New() gin.HandlerFunc { c.Next() - status := c.Writer.Status() + var ( + status string + ) + + _status := c.Writer.Status() duration := time.Since(start) - var logFn func(msg string, data ...any) switch { - case status >= 500: - logFn = logger.Error - case status >= 400: - logFn = logger.Warn + case _status >= 500: + status = color.RedString("%3d", _status) + case _status >= 400: + status = color.YellowString("%3d", _status) default: - logFn = logger.Info + status = color.GreenString("%3d", _status) } - if logFn != nil { - b := stringBuilderPool.Get().(*strings.Builder) - b.Reset() + b := stringBuilderPool.Get().(*strings.Builder) + b.Reset() - b.WriteString(fmt.Sprintf("%36s", trace)) - b.WriteString(" | ") - b.WriteString(fmt.Sprintf("%3d", status)) - b.WriteString(" | ") - b.WriteString(fmt.Sprintf("%15s", ip)) - b.WriteString(" | ") - b.WriteString(tool.HumanDuration(duration.Nanoseconds())) - b.WriteString(" | ") - b.WriteString(c.Request.Method) - b.WriteString(" | ") - b.WriteString(c.Request.RequestURI) + b.WriteString("GIN | ") + b.WriteString(start.Format("2006-01-02T15:04:05")) + b.WriteString(" | ") + b.WriteString(trace) + b.WriteString(" | ") + b.WriteString(status) + b.WriteString(" | ") + b.WriteString(fmt.Sprintf("%15s", ip)) + b.WriteString(" | ") + b.WriteString(tool.HumanDuration(duration.Nanoseconds())) + b.WriteString(" | ") + b.WriteString(c.Request.Method) + b.WriteString(" | ") + b.WriteString(c.Request.RequestURI) - logFn(b.String()) + fmt.Println(b.String()) - stringBuilderPool.Put(b) - } + stringBuilderPool.Put(b) } } diff --git a/middlewares/logger/logger_test.go b/middlewares/logger/logger_test.go index 0acb887..c839856 100644 --- a/middlewares/logger/logger_test.go +++ b/middlewares/logger/logger_test.go @@ -2,10 +2,12 @@ package logger import ( "errors" - "github.com/gin-gonic/gin" "net/http" "testing" "time" + + "gitea.loveuer.com/yizhisec/packages/logger" + "github.com/gin-gonic/gin" ) func TestLogger(t *testing.T) { @@ -20,6 +22,7 @@ func TestLogger(t *testing.T) { c.JSON(400, gin.H{"hello": "world"}) }) app.GET("/500", func(c *gin.Context) { + logger.ErrorCtx(c.Request.Context(), "oops") c.JSON(500, gin.H{"hello": "world"}) })