github.com/ddev/ddev@v1.23.2-0.20240519125000-d824ffe36ff3/pkg/amplitude/loggers/ddev_logger.go (about) 1 package loggers 2 3 import ( 4 "fmt" 5 "regexp" 6 7 "github.com/amplitude/analytics-go/amplitude/types" 8 "github.com/ddev/ddev/pkg/output" 9 "github.com/ddev/ddev/pkg/util" 10 ) 11 12 func NewDdevLogger(debug, verbose bool) types.Logger { 13 return &ddevLogger{ 14 debug: debug, 15 verbose: verbose, 16 } 17 } 18 19 type ddevLogger struct { 20 debug bool 21 verbose bool 22 } 23 24 func (l *ddevLogger) Debugf(message string, args ...interface{}) { 25 if l.verbose { 26 output.UserErr.Print(filterMessage(message, args...)) 27 } 28 } 29 30 func (l *ddevLogger) Infof(message string, args ...interface{}) { 31 if l.verbose || l.debug { 32 output.UserErr.Info(filterMessage(util.ColorizeText(message, "green"), args...)) 33 } 34 } 35 36 func (l *ddevLogger) Warnf(message string, args ...interface{}) { 37 if l.verbose || l.debug { 38 output.UserErr.Warn(filterMessage(util.ColorizeText(message, "yellow"), args...)) 39 } 40 } 41 42 func (l *ddevLogger) Errorf(message string, args ...interface{}) { 43 if l.verbose || l.debug { 44 output.UserErr.Error(filterMessage(util.ColorizeText(message, "red"), args...)) 45 } 46 } 47 48 // filterMessage removes sensitive data from the message like the API key. 49 func filterMessage(message string, args ...interface{}) string { 50 re := regexp.MustCompile(`(?m)"api_key"\s*:\s*"[^"]*"`) 51 message = re.ReplaceAllString(fmt.Sprintf(message, args...), `"api_key":"***"`) 52 53 return fmt.Sprintf("AMPLITUDE: %s", message) 54 }