| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- /*
- @Time : 2019-06-28 17:48
- @Author : zr
- @File : logger
- @Software: GoLand
- */
- package middleware
- import (
- "encoding/json"
- "github.com/ZR233/goutils/stackx"
- "github.com/gin-gonic/gin"
- "github.com/sirupsen/logrus"
- "time"
- "video_course/errors"
- "video_course/model"
- )
- func Logger() gin.HandlerFunc {
- return func(c *gin.Context) {
- beginTime := time.Now()
- defer func() {
- code := 0
- logMsg := "success"
- if p := recover(); p != nil {
- err := p.(error)
- stdErr := errors.FromError(err)
- logMsg = stdErr.Error() + "\n" + string(stackx.Stack(0))
- code = int(stdErr.Code)
- _ = c.Error(err)
- }
- userid := ""
- src := ""
- endTime := time.Now()
- if i, exists := c.Get("session"); exists {
- s, ok := i.(*model.Session)
- if ok {
- if s != nil {
- userid = s.UserId
- src = s.Channel
- }
- }
- }
- postForm := c.Request.PostForm
- params, _ := json.Marshal(postForm)
- url := c.Request.URL.Path
- event := logrus.WithFields(logrus.Fields{
- "execTime": endTime.Sub(beginTime).Milliseconds(),
- "trace": url,
- "optUserId": userid,
- "src": src,
- "code": code,
- "params": string(params),
- })
- event.Time = beginTime
- if len(c.Errors) > 0 {
- event.Warn(logMsg)
- } else {
- event.Info(logMsg)
- }
- }()
- c.Next()
- }
- }
|