github.com/Cloud-Foundations/Dominator@v0.3.4/lib/log/testlogger/impl.go (about) 1 package testlogger 2 3 import ( 4 "fmt" 5 "time" 6 ) 7 8 func strip(s string) string { 9 length := len(s) 10 if length < 1 { 11 return "" 12 } 13 if s[length-1] == '\n' { 14 return s[:length-1] 15 } 16 return s 17 } 18 19 func plainSprint(v ...interface{}) string { 20 return strip(fmt.Sprint(v...)) 21 } 22 23 func plainSprintf(format string, v ...interface{}) string { 24 return strip(fmt.Sprintf(format, v...)) 25 } 26 27 func newTestlogger(logger TestLogger) *Logger { 28 return &Logger{ 29 logger: logger, 30 sprint: plainSprint, 31 sprintf: plainSprintf, 32 } 33 } 34 35 func newWithTimestamps(logger TestLogger) *Logger { 36 l := &Logger{ 37 logger: logger, 38 startTime: time.Now(), 39 } 40 l.sprint = l.sprintWithTimestamp 41 l.sprintf = l.sprintfWithTimestamp 42 return l 43 } 44 45 func (l *Logger) sprintWithTimestamp(v ...interface{}) string { 46 return fmt.Sprintf("[%09.6fs] %s", 47 float64(time.Since(l.startTime))/float64(time.Second), 48 plainSprint(v...)) 49 } 50 51 func (l *Logger) sprintfWithTimestamp(format string, v ...interface{}) string { 52 return fmt.Sprintf("[%09.6fs] %s", 53 float64(time.Since(l.startTime))/float64(time.Second), 54 plainSprintf(format, v...)) 55 }