Skip to content

Commit

Permalink
feat: create a logrus-gin middleware
Browse files Browse the repository at this point in the history
  • Loading branch information
gabrielg2020 committed Nov 3, 2024
1 parent de8b095 commit af29513
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 3 deletions.
2 changes: 1 addition & 1 deletion pkg/logger/logger.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,5 +22,5 @@ func init() {
logrus.FieldKeyMsg: "@message",
},
})
Log.SetLevel(logrus.InfoLevel)
Log.SetLevel(logrus.DebugLevel)
}
38 changes: 38 additions & 0 deletions pkg/middleware/logrus_gin_middleware.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package middleware

import (
"github.com/gin-gonic/gin"
"github.com/sirupsen/logrus"
"time"
)

func LogrusMiddleware(logger *logrus.Logger) gin.HandlerFunc {
return func(c *gin.Context) {
startTime := time.Now()
c.Next()
endTime := time.Now()
latency := endTime.Sub(startTime)

statusCode := c.Writer.Status()
clientIP := c.ClientIP()
method := c.Request.Method
path := c.Request.URL.Path

errors := c.Errors.ByType(gin.ErrorTypePrivate).String()

entry := logger.WithFields(logrus.Fields{
"status_code": statusCode,
"latency": latency,
"client_ip": clientIP,
"method": method,
"path": path,
"errors": errors,
})

if len(errors) > 0 {
entry.Error(errors)
} else {
entry.Info()
}
}
}
4 changes: 2 additions & 2 deletions server/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
"github.com/gabrielg2020/chess-api/api/service/fen_service"
"github.com/gabrielg2020/chess-api/api/service/move_service"
"github.com/gabrielg2020/chess-api/pkg/logger"
"github.com/gabrielg2020/chess-api/pkg/middleware"
"github.com/gin-gonic/gin"
)

Expand Down Expand Up @@ -43,8 +44,7 @@ func main() {

func setUpEngine() *gin.Engine {
engine := gin.New()
engine.Use(gin.Logger())
engine.Use(gin.Recovery())
engine.Use(middleware.LogrusMiddleware(logger.Log), gin.Recovery())
err := engine.SetTrustedProxies([]string{"127.0.0.1"})
if err != nil {
logger.Log.WithError(err).Fatal("Failed to set trusted proxies")
Expand Down

0 comments on commit af29513

Please sign in to comment.