diff --git a/.changelog/35.txt b/.changelog/35.txt new file mode 100644 index 0000000..3403f19 --- /dev/null +++ b/.changelog/35.txt @@ -0,0 +1,3 @@ +```release-note:bug +tfsdklog: Consolidated multiple invalid log level messages and added missing newline +``` diff --git a/tfsdklog/sink.go b/tfsdklog/sink.go index eeb8c8a..271039d 100644 --- a/tfsdklog/sink.go +++ b/tfsdklog/sink.go @@ -6,6 +6,7 @@ import ( "io" "os" "strings" + "sync" "syscall" "github.com/hashicorp/go-hclog" @@ -53,6 +54,9 @@ const ( // loggers. var ValidLevels = []string{"TRACE", "DEBUG", "INFO", "WARN", "ERROR", "OFF"} +// Only show invalid log level message once across any number of level lookups. +var invalidLogLevelMessage sync.Once + func getSink(ctx context.Context) hclog.Logger { logger := ctx.Value(logging.SinkKey) if logger == nil { @@ -120,8 +124,14 @@ func newSink(t testing.T) hclog.Logger { } else if isValidLogLevel(envLevel) { logLevel = hclog.LevelFromString(envLevel) } else { - fmt.Fprintf(os.Stderr, "[WARN] Invalid log level: %q. Defaulting to level: OFF. Valid levels are: %+v", - envLevel, ValidLevels) + invalidLogLevelMessage.Do(func() { + fmt.Fprintf( + os.Stderr, + "[WARN] Invalid log level: %q. Defaulting to level: OFF. Valid levels are: %+v\n", + envLevel, + ValidLevels, + ) + }) } return hclog.New(&hclog.LoggerOptions{