增加调试模式下的SQL列表打印方法PrintQueriedSqls;改进gtime.NewFromTimeStamp方法,支持纳秒级的时间戳参数

This commit is contained in:
john
2018-08-08 20:37:15 +08:00
parent 47c6f4215c
commit 8049fa0429
6 changed files with 54 additions and 34 deletions

View File

@ -102,7 +102,8 @@ type Sql struct {
Sql string // SQL语句(可能带有预处理占位符)
Args []interface{} // 预处理参数值列表
Error error // 执行结果(nil为成功)
Cost int64 // 执行时间消耗(毫秒)
Start int64 // 执行开始时间(毫秒)
End int64 // 执行结束时间(毫秒)
Func string // 执行方法名称
}

View File

@ -32,7 +32,7 @@ func (db *Db) SetDebug(debug bool) {
}
}
// 获取已经执行的SQL列表
// 获取已经执行的SQL列表(仅在debug=true时有效)
func (db *Db) GetQueriedSqls() []*Sql {
if db.sqls == nil {
return nil
@ -49,6 +49,21 @@ func (db *Db) GetQueriedSqls() []*Sql {
return sqls
}
// 打印已经执行的SQL列表(仅在debug=true时有效)
func (db *Db) PrintQueriedSqls() {
sqls := db.GetQueriedSqls()
for k, v := range sqls {
fmt.Println(len(sqls) - k, ":")
fmt.Println(" Sql :", v.Sql)
fmt.Println(" Args :", v.Args)
fmt.Println(" Error:", v.Error)
fmt.Println(" Start:", gtime.NewFromTimeStamp(v.Start).Format("Y-m-d H:i:s.u"))
fmt.Println(" End :", gtime.NewFromTimeStamp(v.End).Format("Y-m-d H:i:s.u"))
fmt.Println(" Cost :", v.End - v.Start, "ms")
fmt.Println(" Func :", v.Func)
}
}
// 关闭链接
func (db *Db) Close() error {
if db.master != nil {
@ -81,7 +96,8 @@ func (db *Db) Query(query string, args ...interface{}) (*sql.Rows, error) {
Sql : *p,
Args : args,
Error : err,
Cost : militime2 - militime1,
Start : militime1,
End : militime2,
Func : "DB:Query",
})
} else {
@ -108,7 +124,8 @@ func (db *Db) Exec(query string, args ...interface{}) (sql.Result, error) {
Sql : *p,
Args : args,
Error : err,
Cost : militime2 - militime1,
Start : militime1,
End : militime2,
Func : "DB:Exec",
})
} else {

View File

@ -46,7 +46,8 @@ func (tx *Tx) Query(query string, args ...interface{}) (*sql.Rows, error) {
Sql : *p,
Args : args,
Error : err,
Cost : militime2 - militime1,
Start : militime1,
End : militime2,
Func : "TX:Query",
})
} else {
@ -73,7 +74,8 @@ func (tx *Tx) Exec(query string, args ...interface{}) (sql.Result, error) {
Sql : *p,
Args : args,
Error : err,
Cost : militime2 - militime1,
Start : militime1,
End : militime2,
Func : "TX:Exec",
})
} else {