package log
|
|
|
|
import (
|
|
"io"
|
|
"os"
|
|
"sync"
|
|
"testing"
|
|
)
|
|
|
|
var (
|
|
// reuse the same logger across all tests
|
|
testingLoggerMtx = sync.Mutex{}
|
|
testingLogger Logger
|
|
)
|
|
|
|
// TestingLogger returns a Logger which writes to STDOUT if test(s) are being
|
|
// run with the verbose (-v) flag, NopLogger otherwise.
|
|
//
|
|
// NOTE:
|
|
// - A call to NewTestingLogger() must be made inside a test (not in the init func)
|
|
// because verbose flag only set at the time of testing.
|
|
func TestingLogger() Logger {
|
|
return TestingLoggerWithOutput(os.Stdout)
|
|
}
|
|
|
|
func TestingLoggerWithOutput(w io.Writer) Logger {
|
|
testingLoggerMtx.Lock()
|
|
defer testingLoggerMtx.Unlock()
|
|
|
|
if testingLogger != nil {
|
|
return testingLogger
|
|
}
|
|
|
|
if testing.Verbose() {
|
|
testingLogger = MustNewDefaultLogger(LogFormatText, LogLevelDebug, true)
|
|
} else {
|
|
testingLogger = NewNopLogger()
|
|
}
|
|
|
|
return testingLogger
|
|
}
|