Merge ad2dae1732
into b36f8ed87e
This commit is contained in:
commit
b7b75a00f9
34
engine.go
34
engine.go
|
@ -8,12 +8,14 @@ import (
|
||||||
"bufio"
|
"bufio"
|
||||||
"bytes"
|
"bytes"
|
||||||
"database/sql"
|
"database/sql"
|
||||||
|
"database/sql/driver"
|
||||||
"encoding/gob"
|
"encoding/gob"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"os"
|
"os"
|
||||||
"reflect"
|
"reflect"
|
||||||
|
"regexp"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
|
@ -51,6 +53,8 @@ type Engine struct {
|
||||||
disableGlobalCache bool
|
disableGlobalCache bool
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var sqlRegexp = regexp.MustCompile(`(\$\d+)|\?`)
|
||||||
|
|
||||||
func (engine *Engine) SetLogger(logger core.ILogger) {
|
func (engine *Engine) SetLogger(logger core.ILogger) {
|
||||||
engine.Logger = logger
|
engine.Logger = logger
|
||||||
engine.dialect.SetLogger(logger)
|
engine.dialect.SetLogger(logger)
|
||||||
|
@ -197,10 +201,34 @@ func (engine *Engine) logSQL(sqlStr string, sqlArgs ...interface{}) {
|
||||||
if engine.ShowSQL {
|
if engine.ShowSQL {
|
||||||
engine.overrideLogLevel(core.LOG_INFO)
|
engine.overrideLogLevel(core.LOG_INFO)
|
||||||
if len(sqlArgs) > 0 {
|
if len(sqlArgs) > 0 {
|
||||||
engine.Logger.Infof("[sql] %v [args] %v", sqlStr, sqlArgs)
|
// format sql args
|
||||||
} else {
|
var formatedSqlArgs []interface{}
|
||||||
engine.Logger.Infof("[sql] %v", sqlStr)
|
for _, value := range sqlArgs {
|
||||||
|
indirectValue := reflect.Indirect(reflect.ValueOf(value))
|
||||||
|
if indirectValue.IsValid() {
|
||||||
|
value = indirectValue.Interface()
|
||||||
|
if t, ok := value.(time.Time); ok {
|
||||||
|
formatedSqlArgs = append(formatedSqlArgs, fmt.Sprintf("'%v'", t.Format(time.RFC3339)))
|
||||||
|
} else if b, ok := value.([]byte); ok {
|
||||||
|
formatedSqlArgs = append(formatedSqlArgs, fmt.Sprintf("'%v'", string(b)))
|
||||||
|
} else if r, ok := value.(driver.Valuer); ok {
|
||||||
|
if value, err := r.Value(); err == nil && value != nil {
|
||||||
|
formatedSqlArgs = append(formatedSqlArgs, fmt.Sprintf("'%v'", value))
|
||||||
|
} else {
|
||||||
|
formatedSqlArgs = append(formatedSqlArgs, "NULL")
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
formatedSqlArgs = append(formatedSqlArgs, fmt.Sprintf("'%v'", value))
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
formatedSqlArgs = append(formatedSqlArgs, fmt.Sprintf("'%v'", value))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sqlStr = fmt.Sprintf(sqlRegexp.ReplaceAllString(sqlStr, "%v"), formatedSqlArgs...)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
engine.Logger.Infof("[sql] %v", sqlStr)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue