gorm/logger.go

40 lines
890 B
Go
Raw Normal View History

2013-11-11 05:05:14 +04:00
package gorm
2013-11-11 07:11:49 +04:00
import (
"fmt"
"log"
"os"
2013-11-11 07:53:56 +04:00
"regexp"
2013-11-11 11:48:31 +04:00
"time"
2013-11-11 07:11:49 +04:00
)
2013-11-11 05:05:14 +04:00
2014-01-03 15:23:41 +04:00
type logger interface {
2013-11-11 05:05:14 +04:00
Print(v ...interface{})
}
2014-01-03 15:23:41 +04:00
type Logger struct {
2013-11-11 13:16:15 +04:00
*log.Logger
}
//var defaultLogger = log.New(os.Stdout, "\r\n", 0)
var defaultLogger = Logger{log.New(os.Stdout, "\r\n", 0)}
2013-11-19 04:50:07 +04:00
2014-01-03 15:23:41 +04:00
func (logger Logger) Print(v ...interface{}) {
2013-11-11 13:16:15 +04:00
if len(v) > 1 {
level := v[0]
tim := "\033[33m[" + time.Now().Format("2006-01-02 15:04:05") + "]\033[0m"
if level == "sql" {
dur := v[1]
sql := fmt.Sprintf(regexp.MustCompile(`(\$\d+)|\?`).ReplaceAllString(v[2].(string), "'%v'"), v[3].([]interface{})...)
dur = fmt.Sprintf(" \033[36;1m[%.2fms]\033[0m ", float64(dur.(time.Duration).Nanoseconds()/1e4)/100.0)
logger.Println(tim, dur, sql)
} else {
messages := []interface{}{"\033[31m"}
messages = append(messages, v...)
messages = append(messages, "\033[0m")
logger.Println(messages...)
}
}
}