From 7b6dfb25489524245ee6ad50c72475b6006c7d21 Mon Sep 17 00:00:00 2001 From: sheyanjie-qq <249478495@qq.com> Date: Mon, 15 Jul 2024 17:55:53 +0800 Subject: [PATCH 1/2] add gin log to log file --- system/program.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/system/program.go b/system/program.go index cf3ffbd..b5343b6 100644 --- a/system/program.go +++ b/system/program.go @@ -34,6 +34,8 @@ func Init() *http.Server { } router := web.CreateRouter(conf.Debug, &conf.Cors, false) + router.Use(log.GinLog()) + router.Use(log.GinRecoverLog()) reporter := api.NewReporter(conf) reporter.Init(router) From 1fbb7e15ae8499d732db39105d0bae148a1d8add Mon Sep 17 00:00:00 2001 From: sheyanjie-qq <249478495@qq.com> Date: Mon, 15 Jul 2024 17:56:41 +0800 Subject: [PATCH 2/2] add gin log to log file --- infrastructure/log/web.go | 49 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 infrastructure/log/web.go diff --git a/infrastructure/log/web.go b/infrastructure/log/web.go new file mode 100644 index 0000000..b1325fe --- /dev/null +++ b/infrastructure/log/web.go @@ -0,0 +1,49 @@ +package log + +import ( + "time" + + "github.com/gin-gonic/gin" + "github.com/sirupsen/logrus" +) + +func GinLog() gin.HandlerFunc { + logger := GetLogger("web") + + return func(c *gin.Context) { + startTime := time.Now() + c.Next() + endTime := time.Now() + latencyTime := endTime.Sub(startTime) + reqMethod := c.Request.Method + reqUri := c.Request.RequestURI + statusCode := c.Writer.Status() + clientIP := c.ClientIP() + + logger.Infof("[GIN] %v | %3d | %13v | %15s | %-7s %s", + endTime.Format("2006/01/02 - 15:04:05"), + statusCode, + latencyTime, + clientIP, + reqMethod, + reqUri, + ) + } +} + +type recoverLog struct { + logger logrus.FieldLogger +} + +func (r *recoverLog) Write(p []byte) (n int, err error) { + r.logger.Errorln(string(p)) + return len(p), nil +} + +func GinRecoverLog() gin.HandlerFunc { + logger := GetLogger("web") + return func(c *gin.Context) { + writer := &recoverLog{logger: logger} + gin.RecoveryWithWriter(writer)(c) + } +}