问答

gin 为什么插入了2次记录

作者:admin 2021-09-11 我要评论

// 日志记录到文件func LogerMiddleware() gin.HandlerFunc { dir := file.GetPwd() logFilePath := fmt.Sprintf("%s/%s%s", dir, setting.AppSetting.RuntimeRo...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)
// 日志记录到文件
func LogerMiddleware() gin.HandlerFunc {
   dir := file.GetPwd()
   logFilePath := fmt.Sprintf("%s/%s%s", dir, setting.AppSetting.RuntimeRootPath, setting.AppSetting.LogSavePath)
   logFileName := "gin"

   // 日志文件
   fileName := path.Join(logFilePath, logFileName)
   fmt.Println("LogerMiddleware: " + fileName)

   // 写入文件
   src, err := os.OpenFile(fileName, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0777)
   if err != nil {
       fmt.Println("err", err)
   }
   // 实例化
   logger := logrus.New()
   //设置日志级别
   logger.SetLevel(logrus.DebugLevel)
   //设置输出
   logger.Out = src

   // 设置 rotatelogs
   logWriter, err := rotatelogs.New(
       // 分割后的文件名称
       fileName+".%Y-%m-%d.log",
       // 生成软链,指向最新日志文件
       rotatelogs.WithLinkName(fileName),
       // 设置最大保存时间(7天)
       rotatelogs.WithMaxAge(7*24*time.Hour),
       // 设置日志切割时间间隔(1天)
       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,
   }

   logger.AddHook(lfshook.NewHook(writeMap, &logrus.TextFormatter{
       TimestampFormat: "15:04:05",
   }))

   return func(c *gin.Context) {
       //开始时间
       startTime := time.Now()
       //处理请求
       c.Next()
       //结束时间
       endTime := time.Now()
       logger.Infof("%3d | %8v | %13s | %s | %s | %s | %s | %s |",
           c.Writer.Status(),
           endTime.Sub(startTime),
           c.ClientIP(),
           c.Request.Method,
           c.Request.RequestURI,
           c.Request.Proto,
           c.Request.UserAgent(),
           c.Request.Referer(),
       )

   }
}
time="16:48:31" level=info msg="200 | 4.000226207s |     127.0.0.1 | GET | /gapi/MenuGoods/login | HTTP/1.0 | Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36 Edg/80.0.361.69 |  |"
time="2020-04-03T16:48:31+08:00" level=info msg="200 | 4.000226207s |     127.0.0.1 | GET | /gapi/MenuGoods/login | HTTP/1.0 | Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36 Edg/80.0.361.69 |  |"
time="16:54:12" level=info msg="200 | 4.000376069s |     127.0.0.1 | GET | /gapi/MenuGoods/login | HTTP/1.0 | Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36 Edg/80.0.361.69 |  |"
time="2020-04-03T16:54:12+08:00" level=info msg="200 | 4.000376069s |     127.0.0.1 | GET | /gapi/MenuGoods/login | HTTP/1.0 | Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36 Edg/80.0.361.69 |  |"
###

时间都不一样,应该是两次独立的请求吧

###

你给logger加的hook也写入了日志吧

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • gin 为什么插入了2次记录

    gin 为什么插入了2次记录

  • es6 module 如何将引入的文件和其他文

    es6 module 如何将引入的文件和其他文

  • react hooks中获取useSelector值问题

    react hooks中获取useSelector值问题

  • mongoose (update $pull)向数组中删除

    mongoose (update $pull)向数组中删除

腾讯云代理商
海外云服务器