golang gorm访问底层的mysql查询

时间:2016-03-29 10:14:53

标签: mysql logging go go-gorm

有没有办法从https://github.com/jinzhu/gorm获取sql查询日志?

e.g。在开发环境中,能够将已调用的mysql查询记录到控制台是很有用的。

e.g。如何获取以下查询的基础SQL查询日志:

    let geoPoint = PFObject(className: "location")

    geoPoint["location"] = activePlace
    geoPoint.saveInBackgroundWithBlock { (succes, error) -> Void in
        print("place has been saved")
    }

我知道我可以致电:

gorm.Find(&todos)
gorm.Preload("User").Find(&todos)

但我想只在开发环境中而不是在制作中调用gorm.Debug().Find(&todos) gorm.Debug().Preload("User").Find(&todos)

3 个答案:

答案 0 :(得分:38)

这样可以解决问题:

db, err:= Open(dbType, connectionDSN);
db.LogMode(true)

答案 1 :(得分:4)

在新版本(GORM v2)中,使用Logger接口:

db, err := gorm.Open(mysql.Open(connectionDSN), &gorm.Config{
    Logger: logger.Default.LogMode(logger.Info),
})

对于旧版本(GORM v1):

db, err:= Open(dbType, connectionDSN);
db.LogMode(true)

注意:这不是 MySQL 特有的,可以与任何其他数据库驱动程序(例如 Postgres、SQLite 等)一起使用。

答案 2 :(得分:1)

您可以使用gorm.SetLogger方法将自己的记录器传递给gorm。它使用记录器的Print方法来打印日志和SQL查询。任何记录器(logrus / go的内置记录器)的Print方法的日志级别通常设置为INFO。在将记录器传递给gorm时,如果将日志级别设置为低于或等于INFO(DEBUG / INFO),则可以通过gorm查看sql查询和其他日志

您还可以从配置文件中解析日志级别,您可以根据环境

进行设置