github.com/everdrone/grab@v0.1.7-0.20230416223925-40674b995521/internal/instance/log.go (about) 1 package instance 2 3 import ( 4 "fmt" 5 "io" 6 "strings" 7 "time" 8 9 "github.com/fatih/color" 10 "github.com/rs/zerolog" 11 ) 12 13 func DefaultLogger(w io.Writer) zerolog.ConsoleWriter { 14 return zerolog.ConsoleWriter{ 15 Out: w, 16 TimeFormat: time.RFC3339Nano, 17 FormatTimestamp: func(i interface{}) string { return "" }, 18 FormatLevel: func(i interface{}) string { 19 var l string 20 c := color.New(color.FgBlack) 21 if ll, ok := i.(string); ok { 22 switch ll { 23 case zerolog.LevelTraceValue: 24 c.Add(color.BgMagenta) 25 l = c.Sprint(" TRC ") 26 case zerolog.LevelDebugValue: 27 c.Add(color.BgBlue) 28 l = c.Sprint(" DBG ") 29 case zerolog.LevelInfoValue: 30 c.Add(color.BgGreen) 31 l = c.Sprint(" INF ") 32 case zerolog.LevelWarnValue: 33 c.Add(color.BgYellow) 34 l = c.Sprint(" WRN ") 35 case zerolog.LevelErrorValue: 36 c.Add(color.BgRed) 37 l = c.Sprint(" ERR ") 38 case zerolog.LevelFatalValue: 39 c.Add(color.BgHiRed) 40 l = c.Sprint(" FTL ") 41 case zerolog.LevelPanicValue: 42 c.Add(color.BgHiRed).Add(color.Bold) 43 l = c.Sprint(" PNC ") 44 default: 45 c.Add(color.FgWhite).Add(color.Bold) 46 l = c.Sprint(" ??? ") 47 } 48 } else { 49 if i == nil { 50 c.Add(color.FgWhite).Add(color.Bold) 51 l = c.Sprint(" ??? ") 52 } else { 53 l = " " + strings.ToUpper(fmt.Sprintf("%s", i))[0:5] + " " 54 } 55 } 56 return l 57 }, 58 FormatFieldName: func(i interface{}) string { 59 return color.New(color.FgHiWhite).Sprint(fmt.Sprintf("%s=", i)) 60 }, 61 FormatMessage: func(i interface{}) string { 62 return fmt.Sprintf("%s", i) 63 }, 64 } 65 }