|
|
- 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
- }
|