github.com/hspak/nomad@v0.7.2-0.20180309000617-bc4ae22a39a5/helper/testlog/testlog.go (about) 1 // Package testlog creates a *log.Logger backed by *testing.T to ease logging 2 // in tests. This allows logs from components being tested to only be printed 3 // if the test fails (or the verbose flag is specified). 4 package testlog 5 6 import ( 7 "io" 8 "log" 9 ) 10 11 // LogPrinter is the methods of testing.T (or testing.B) needed by the test 12 // logger. 13 type LogPrinter interface { 14 Logf(format string, args ...interface{}) 15 } 16 17 // writer implements io.Writer on top of a Logger. 18 type writer struct { 19 t LogPrinter 20 } 21 22 // Write to an underlying Logger. Never returns an error. 23 func (w *writer) Write(p []byte) (n int, err error) { 24 w.t.Logf(string(p)) 25 return len(p), nil 26 } 27 28 // NewWriter creates a new io.Writer backed by a Logger. 29 func NewWriter(t LogPrinter) io.Writer { 30 return &writer{t} 31 } 32 33 // New returns a new test logger. See https://golang.org/pkg/log/#New 34 func New(t LogPrinter, prefix string, flag int) *log.Logger { 35 return log.New(&writer{t}, prefix, flag) 36 } 37 38 // WithPrefix returns a new test logger with the Lmicroseconds flag set. 39 func WithPrefix(t LogPrinter, prefix string) *log.Logger { 40 return New(t, prefix, log.Lmicroseconds) 41 } 42 43 // NewLog logger with "TEST" prefix and the Lmicroseconds flag. 44 func Logger(t LogPrinter) *log.Logger { 45 return WithPrefix(t, "") 46 }