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  }