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