Go开发过程中需要会的两个问题

Python/Go 林涛 2779℃ 0评论

1.在使用http包时候出现两次请求:

在http包使用的时候,注册了 / 这个根路径的模式处理,浏览器会自动的请求favicon.ico ,如果不处理则会出现两次请求,处理方法:

//设置一个方法
func index(w http.ResponseWriter, r *http.Request) {
    if r.URL.RequestURI() == "/favicon.ico" {
        return
    }
}    
 

2.在使用Gorm时候打印Sql语句:

    1. 在打开连接时设置日志级别为Info

      DB, err = gorm.Open(mysql.Open(dsn), &gorm.Config{
          Logger:logger.Default.LogMode(logger.Info),
      })
      
    2. 打印单条sql:

      在操作前加Debug(), 相当于将临时将日志级别改为Info

      DB.Debug().Where("ID = ?", 52).First(&newData)
      
      //输出
      //[0.773ms] [rows:1] SELECT * FROM `User` WHERE ID = 52 ORDER BY `User`.`id` LIMIT 1
    3. 只打印慢查询
      slowLogger := logger.New(
              //将标准输出作为Writer
              log.New(os.Stdout, "\r\n", log.LstdFlags),
              
          
              logger.Config{
                  //设定慢查询时间阈值为1ms
                  SlowThreshold: 1 * time.Microsecond,   
                  //设置日志级别,只有Warn和Info级别会输出慢查询日志
                  LogLevel: logger.Warn, 
              },
          )
      
          DB, err = gorm.Open(mysql.Open(dsn), &gorm.Config{
              Logger:slowLogger,
          })
          
      //输出类似
      //2021/05/14 11:36:28 /home/ballqiu/go/gorm/mydb.go:98 SLOW SQL >= 1ms
      //[2.996ms] [rows:1] INSERT INTO `User` (`name`,`age`,`is_admin`,`is_valid`,`login_time`) VALUES ('ball',0,true,false,'2021-05-14 11:36:28.436')

      说明:

      • 默认的SlowThreshold为200ms
      • 如果你不想改变这个默认值,那么只需要将日志级别改为Warn即可只打印慢查询。

 

DB, err = gorm.Open(mysql.Open(dsn), &gorm.Config{ Logger:logger.Default.LogMode(logger.Warn), })

 

 

 

如需转载请注明: 转载自26点的博客

本文链接地址: Go开发过程中需要会的两个问题

转载请注明:26点的博客 » Go开发过程中需要会的两个问题

喜欢 (0)
发表我的评论
取消评论

表情