1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
| package middleware
import ( "fmt" "os" "path" "time"
"github.com/gin-gonic/gin" "github.com/sirupsen/logrus" )
func LoggerToFile() gin.HandlerFunc {
logFilePath := "log" logFileName := "gin.log"
fileName := path.Join(logFilePath, logFileName)
if _, err := os.Stat(fileName); os.IsNotExist(err) { os.Create(fileName) } src, err := os.OpenFile(fileName, os.O_APPEND|os.O_WRONLY, os.ModeAppend) if err != nil { fmt.Println("err", err) }
logger := logrus.New()
logger.Out = src
logger.SetLevel(logrus.DebugLevel)
logger.SetFormatter(&logrus.TextFormatter{ })
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()
referer := c.Request.Referer()
clientUserAgent := c.Request.UserAgent()
errors := c.Errors
entry := logger.WithFields(logrus.Fields{ "statusCode": statusCode, "latency": latencyTime, "clientIP": clientIP, "method": reqMethod, "path": reqURI, "referer": referer, "userAgent": clientUserAgent, "errors": errors, })
msg := fmt.Sprintf("| %3d | %13v | %15s | %s | %s | %s | %s |", statusCode, latencyTime, clientIP, reqMethod, reqURI, referer, clientUserAgent) if statusCode > 499 { entry.Error(msg) } else if statusCode > 399 { entry.Warn(msg) } else { entry.Info(msg) }
} }
func LoggerToMongo() gin.HandlerFunc { return func(c *gin.Context) {
} }
func LoggerToES() gin.HandlerFunc { return func(c *gin.Context) {
} }
func LoggerToMQ() gin.HandlerFunc { return func(c *gin.Context) {
} }
|