diff --git a/setup.go b/setup.go index b08f46e..09c9554 100644 --- a/setup.go +++ b/setup.go @@ -283,7 +283,9 @@ func SetLogLevel(name, level string) error { // wildcard, change all if name == "*" { SetAllLoggers(lvl) + loggerMutex.Lock() defaultLevel = lvl + loggerMutex.Unlock() return nil } diff --git a/setup_test.go b/setup_test.go index 73293f6..f6ae412 100644 --- a/setup_test.go +++ b/setup_test.go @@ -461,3 +461,23 @@ func TestSlogHandler_Concurrent(t *testing.T) { wg.Wait() } + +func TestSetLogLevelConcurrentWildcard(t *testing.T) { + numCalls := 100 + wg := sync.WaitGroup{} + wg.Add(numCalls) + + for i := 0; i < numCalls; i++ { + go func(idx int) { + defer wg.Done() + + lvl := "debug" + if idx%2 == 0 { + lvl = "info" + } + _ = SetLogLevel("*", lvl) + }(i) + } + + wg.Wait() +}