有没有办法从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)
答案 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查询和其他日志
您还可以从配置文件中解析日志级别,您可以根据环境
进行设置