123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- package middleware
- import (
- "confrontation-training/common"
- "confrontation-training/global"
- "github.com/gin-gonic/gin"
- rotatelogs "github.com/lestrrat-go/file-rotatelogs"
- "github.com/rifflock/lfshook"
- "github.com/sirupsen/logrus"
- "os"
- "path"
- "time"
- )
- func LoggerToFile() gin.HandlerFunc {
- logFilePath := global.Config.Log2File.FilePath + common.NowTime("2006-01-02")
- logFileName := global.Config.Log2File.FileName + global.Config.Log2File.FileSuffix
-
- fileName := path.Join(logFilePath, logFileName)
-
- err := os.MkdirAll(logFilePath, os.ModePerm)
- if err != nil {
- panic(err)
- return nil
- }
-
-
-
-
-
- src, _ := os.OpenFile(fileName, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0666)
-
- logger := logrus.New()
-
- logger.Out = src
-
- logger.SetLevel(logrus.DebugLevel)
- logger.SetFormatter(&logrus.JSONFormatter{TimestampFormat: "2006-01-02 15:04:05"})
-
- logWriter, err := rotatelogs.New(
-
- fileName+".%Y%m%d.log",
-
- rotatelogs.WithLinkName(fileName),
-
- rotatelogs.WithMaxAge(7*24*time.Hour),
-
- rotatelogs.WithRotationTime(24*time.Hour),
- )
- writeMap := lfshook.WriterMap{
- logrus.InfoLevel: logWriter,
- logrus.FatalLevel: logWriter,
- logrus.DebugLevel: logWriter,
- logrus.WarnLevel: logWriter,
- logrus.ErrorLevel: logWriter,
- logrus.PanicLevel: logWriter,
- }
- lfHook := lfshook.NewHook(writeMap, &logrus.JSONFormatter{
- TimestampFormat: "2006-01-02 15:04:05",
- })
-
- logger.AddHook(lfHook)
- 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.RemoteIP()
-
- logger.WithFields(logrus.Fields{
- "status_code": statusCode,
- "latency_time": latencyTime,
- "client_ip": clientIP,
- "req_method": reqMethod,
- "req_uri": reqUri,
- }).Info()
- }
- }
- 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) {
- }
- }
|