Skip to content

Commit cca4f05

Browse files
authored
tfsdklog: Consolidated multiple invalid log level messages and added missing newline (#35)
Reference: #32 This is related to SDK (or special implementations of testing framework) code which needs to execute `tfsdklog.RegisterTestSink()`, generally via the `tf5server.WithLoggingSink()`/`tf6server.WithLoggingSink()` functions. Previously in terraform-provider-kubernetes: ```console $ TF_LOG=trac go test -v -tags acceptance -run '^TestKubernetesManifest_ConfigMap$' ./manifest/test/acceptance 2022/03/04 16:51:21 Testing against Kubernetes API version: v1.22.3 === RUN TestKubernetesManifest_ConfigMap [WARN] Invalid log level: "TRAC". Defaulting to level: OFF. Valid levels are: [TRACE DEBUG INFO WARN ERROR OFF][WARN] Invalid log level: "TRAC". Defaulting to level: OFF. Valid levels are: [TRACE DEBUG INFO WARN ERROR OFF][WARN] Invalid log level: "TRAC". Defaulting to level: OFF. Valid levels are: [TRACE DEBUG INFO WARN ERROR OFF][WARN] Invalid log level: "TRAC". Defaulting to level: OFF. Valid levels are: [TRACE DEBUG INFO WARN ERROR OFF][WARN] Invalid log level: "TRAC". Defaulting to level: OFF. Valid levels are: [TRACE DEBUG INFO WARN ERROR OFF][WARN] Invalid log level: "TRAC". Defaulting to level: OFF. Valid levels are: [TRACE DEBUG INFO WARN ERROR OFF]... ``` After updating dependency: ```console $ go mod edit -replace=github.com/hashicorp/terraform-plugin-log=/Users/bflad/src/github.com/hashicorp/terraform-plugin-log $ go mod tidy $ go mod vendor $ TF_LOG=trac go test -v -tags acceptance -run '^TestKubernetesManifest_ConfigMap$' ./manifest/test/acceptance 2022/03/04 16:52:49 Testing against Kubernetes API version: v1.22.3 === RUN TestKubernetesManifest_ConfigMap [WARN] Invalid log level: "TRAC". Defaulting to level: OFF. Valid levels are: [TRACE DEBUG INFO WARN ERROR OFF] ... other test output ... ```
1 parent d50d729 commit cca4f05

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

.changelog/35.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:bug
2+
tfsdklog: Consolidated multiple invalid log level messages and added missing newline
3+
```

tfsdklog/sink.go

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"io"
77
"os"
88
"strings"
9+
"sync"
910
"syscall"
1011

1112
"github.com/hashicorp/go-hclog"
@@ -53,6 +54,9 @@ const (
5354
// loggers.
5455
var ValidLevels = []string{"TRACE", "DEBUG", "INFO", "WARN", "ERROR", "OFF"}
5556

57+
// Only show invalid log level message once across any number of level lookups.
58+
var invalidLogLevelMessage sync.Once
59+
5660
func getSink(ctx context.Context) hclog.Logger {
5761
logger := ctx.Value(logging.SinkKey)
5862
if logger == nil {
@@ -120,8 +124,14 @@ func newSink(t testing.T) hclog.Logger {
120124
} else if isValidLogLevel(envLevel) {
121125
logLevel = hclog.LevelFromString(envLevel)
122126
} else {
123-
fmt.Fprintf(os.Stderr, "[WARN] Invalid log level: %q. Defaulting to level: OFF. Valid levels are: %+v",
124-
envLevel, ValidLevels)
127+
invalidLogLevelMessage.Do(func() {
128+
fmt.Fprintf(
129+
os.Stderr,
130+
"[WARN] Invalid log level: %q. Defaulting to level: OFF. Valid levels are: %+v\n",
131+
envLevel,
132+
ValidLevels,
133+
)
134+
})
125135
}
126136

127137
return hclog.New(&hclog.LoggerOptions{

0 commit comments

Comments
 (0)