Merge 36ea322ee8f1666cc97530f5fd5561d909efd105 into e1ce3b706624d5a28d7d7bc4b48c9e61eac14896
This commit is contained in:
commit
7ad080c6c6
64
logger.go
64
logger.go
@ -24,44 +24,48 @@ var defaultLogger = Logger{log.New(os.Stdout, "\r\n", 0)}
|
|||||||
var sqlRegexp = regexp.MustCompile(`(\$\d+)|\?`)
|
var sqlRegexp = regexp.MustCompile(`(\$\d+)|\?`)
|
||||||
|
|
||||||
func (logger Logger) Print(values ...interface{}) {
|
func (logger Logger) Print(values ...interface{}) {
|
||||||
if len(values) > 1 {
|
|
||||||
level := values[0]
|
|
||||||
currentTime := "\n\033[33m[" + NowFunc().Format("2006-01-02 15:04:05") + "]\033[0m"
|
|
||||||
source := fmt.Sprintf("\033[35m(%v)\033[0m", values[1])
|
|
||||||
messages := []interface{}{source, currentTime}
|
|
||||||
|
|
||||||
if level == "sql" {
|
if gormLog := os.Getenv("GORM_LOG_ON"); gormLog != "" {
|
||||||
// duration
|
|
||||||
messages = append(messages, fmt.Sprintf(" \033[36;1m[%.2fms]\033[0m ", float64(values[2].(time.Duration).Nanoseconds()/1e4)/100.0))
|
if len(values) > 1 {
|
||||||
// sql
|
level := values[0]
|
||||||
var formatedValues []interface{}
|
currentTime := "\n\033[33m[" + NowFunc().Format("2006-01-02 15:04:05") + "]\033[0m"
|
||||||
for _, value := range values[4].([]interface{}) {
|
source := fmt.Sprintf("\033[35m(%v)\033[0m", values[1])
|
||||||
indirectValue := reflect.Indirect(reflect.ValueOf(value))
|
messages := []interface{}{source, currentTime}
|
||||||
if indirectValue.IsValid() {
|
|
||||||
value = indirectValue.Interface()
|
if level == "sql" {
|
||||||
if t, ok := value.(time.Time); ok {
|
// duration
|
||||||
formatedValues = append(formatedValues, fmt.Sprintf("'%v'", t.Format(time.RFC3339)))
|
messages = append(messages, fmt.Sprintf(" \033[36;1m[%.2fms]\033[0m ", float64(values[2].(time.Duration).Nanoseconds()/1e4)/100.0))
|
||||||
} else if b, ok := value.([]byte); ok {
|
// sql
|
||||||
formatedValues = append(formatedValues, fmt.Sprintf("'%v'", string(b)))
|
var formatedValues []interface{}
|
||||||
} else if r, ok := value.(driver.Valuer); ok {
|
for _, value := range values[4].([]interface{}) {
|
||||||
if value, err := r.Value(); err == nil && value != nil {
|
indirectValue := reflect.Indirect(reflect.ValueOf(value))
|
||||||
formatedValues = append(formatedValues, fmt.Sprintf("'%v'", value))
|
if indirectValue.IsValid() {
|
||||||
|
value = indirectValue.Interface()
|
||||||
|
if t, ok := value.(time.Time); ok {
|
||||||
|
formatedValues = append(formatedValues, fmt.Sprintf("'%v'", t.Format(time.RFC3339)))
|
||||||
|
} else if b, ok := value.([]byte); ok {
|
||||||
|
formatedValues = append(formatedValues, fmt.Sprintf("'%v'", string(b)))
|
||||||
|
} else if r, ok := value.(driver.Valuer); ok {
|
||||||
|
if value, err := r.Value(); err == nil && value != nil {
|
||||||
|
formatedValues = append(formatedValues, fmt.Sprintf("'%v'", value))
|
||||||
|
} else {
|
||||||
|
formatedValues = append(formatedValues, "NULL")
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
formatedValues = append(formatedValues, "NULL")
|
formatedValues = append(formatedValues, fmt.Sprintf("'%v'", value))
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
formatedValues = append(formatedValues, fmt.Sprintf("'%v'", value))
|
formatedValues = append(formatedValues, fmt.Sprintf("'%v'", value))
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
formatedValues = append(formatedValues, fmt.Sprintf("'%v'", value))
|
|
||||||
}
|
}
|
||||||
|
messages = append(messages, fmt.Sprintf(sqlRegexp.ReplaceAllString(values[3].(string), "%v"), formatedValues...))
|
||||||
|
} else {
|
||||||
|
messages = append(messages, "\033[31;1m")
|
||||||
|
messages = append(messages, values[2:]...)
|
||||||
|
messages = append(messages, "\033[0m")
|
||||||
}
|
}
|
||||||
messages = append(messages, fmt.Sprintf(sqlRegexp.ReplaceAllString(values[3].(string), "%v"), formatedValues...))
|
logger.Println(messages...)
|
||||||
} else {
|
|
||||||
messages = append(messages, "\033[31;1m")
|
|
||||||
messages = append(messages, values[2:]...)
|
|
||||||
messages = append(messages, "\033[0m")
|
|
||||||
}
|
}
|
||||||
logger.Println(messages...)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
4
utils.go
4
utils.go
@ -3,6 +3,7 @@ package gorm
|
|||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"strings"
|
"strings"
|
||||||
|
"sync"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Copied from golint
|
// Copied from golint
|
||||||
@ -18,6 +19,7 @@ func init() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var smap = map[string]string{}
|
var smap = map[string]string{}
|
||||||
|
var mutex = &sync.Mutex{}
|
||||||
|
|
||||||
func ToDBName(name string) string {
|
func ToDBName(name string) string {
|
||||||
if v, ok := smap[name]; ok {
|
if v, ok := smap[name]; ok {
|
||||||
@ -34,7 +36,9 @@ func ToDBName(name string) string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
s := strings.ToLower(buf.String())
|
s := strings.ToLower(buf.String())
|
||||||
|
mutex.Lock()
|
||||||
smap[name] = s
|
smap[name] = s
|
||||||
|
mutex.Unlock()
|
||||||
return s
|
return s
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user