github.com/djenriquez/nomad-1@v0.8.1/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  	"os"
    10  )
    11  
    12  // UseStdout returns true if NOMAD_TEST_STDOUT=1 and sends logs to stdout.
    13  func UseStdout() bool {
    14  	return os.Getenv("NOMAD_TEST_STDOUT") == "1"
    15  }
    16  
    17  // LogPrinter is the methods of testing.T (or testing.B) needed by the test
    18  // logger.
    19  type LogPrinter interface {
    20  	Logf(format string, args ...interface{})
    21  }
    22  
    23  // writer implements io.Writer on top of a Logger.
    24  type writer struct {
    25  	t LogPrinter
    26  }
    27  
    28  // Write to an underlying Logger. Never returns an error.
    29  func (w *writer) Write(p []byte) (n int, err error) {
    30  	w.t.Logf(string(p))
    31  	return len(p), nil
    32  }
    33  
    34  // NewWriter creates a new io.Writer backed by a Logger.
    35  func NewWriter(t LogPrinter) io.Writer {
    36  	if UseStdout() {
    37  		return os.Stdout
    38  	}
    39  	return &writer{t}
    40  }
    41  
    42  // New returns a new test logger. See https://golang.org/pkg/log/#New
    43  func New(t LogPrinter, prefix string, flag int) *log.Logger {
    44  	if UseStdout() {
    45  		return log.New(os.Stdout, prefix, flag)
    46  	}
    47  	return log.New(&writer{t}, prefix, flag)
    48  }
    49  
    50  // WithPrefix returns a new test logger with the Lmicroseconds flag set.
    51  func WithPrefix(t LogPrinter, prefix string) *log.Logger {
    52  	return New(t, prefix, log.Lmicroseconds)
    53  }
    54  
    55  // NewLog logger with "TEST" prefix and the Lmicroseconds flag.
    56  func Logger(t LogPrinter) *log.Logger {
    57  	return WithPrefix(t, "")
    58  }