github.com/tufanbarisyildirim/pop@v4.13.1+incompatible/logger.go (about) 1 package pop 2 3 import ( 4 "fmt" 5 stdlog "log" 6 "os" 7 8 "github.com/fatih/color" 9 "github.com/gobuffalo/pop/internal/oncer" 10 "github.com/gobuffalo/pop/logging" 11 ) 12 13 type logger func(lvl logging.Level, s string, args ...interface{}) 14 type legacyLogger func(s string, args ...interface{}) 15 16 // Debug mode, to toggle verbose log traces 17 var Debug = false 18 19 // Color mode, to toggle colored logs 20 var Color = true 21 22 var log logger 23 24 var defaultStdLogger = stdlog.New(os.Stdout, "[POP] ", stdlog.LstdFlags) 25 var defaultLogger = func(lvl logging.Level, s string, args ...interface{}) { 26 // Handle legacy logger 27 if Log != nil { 28 oncer.Deprecate(0, "pop.Log", "Use pop.SetLogger instead.") 29 Log(s, args...) 30 return 31 } 32 if !Debug && lvl <= logging.Debug { 33 return 34 } 35 if lvl == logging.SQL { 36 if len(args) > 0 { 37 xargs := make([]string, len(args)) 38 for i, a := range args { 39 switch a.(type) { 40 case string: 41 xargs[i] = fmt.Sprintf("%q", a) 42 default: 43 xargs[i] = fmt.Sprintf("%v", a) 44 } 45 } 46 s = fmt.Sprintf("%s - %s | %s", lvl, s, xargs) 47 } else { 48 s = fmt.Sprintf("%s - %s", lvl, s) 49 } 50 } else { 51 s = fmt.Sprintf(s, args...) 52 s = fmt.Sprintf("%s - %s", lvl, s) 53 } 54 if Color { 55 s = color.YellowString(s) 56 } 57 defaultStdLogger.Println(s) 58 } 59 60 // SetLogger overrides the default logger. 61 // 62 // The logger must implement the following interface: 63 // type logger func(lvl logging.Level, s string, args ...interface{}) 64 func SetLogger(l logger) { 65 log = l 66 } 67 68 // Log defines the pop logger. Override it to customize pop logs handling. 69 // Deprecated: use SetLogger instead 70 var Log legacyLogger