Skip to content

Commit 35d6325

Browse files
committed
Better atomic handling.
1 parent a8565dd commit 35d6325

File tree

1 file changed

+8
-10
lines changed

1 file changed

+8
-10
lines changed

go/internal/logging/logger.go

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,7 @@ type Logger interface {
1212
}
1313

1414
//nolint:gochecknoglobals
15-
var loggerInstance *atomic.Value = defaultLoggerInstance()
16-
17-
func defaultLoggerInstance() *atomic.Value {
18-
v := &atomic.Value{}
19-
v.Store(noopLogger{})
20-
return v
21-
}
15+
var loggerInstance atomic.Pointer[Logger]
2216

2317
type noopLogger struct{}
2418

@@ -41,15 +35,19 @@ func (c ConsoleLogger) Errorf(format string, v ...interface{}) {
4135

4236
// ClearLogger clears the logger returning to a no-op logger.
4337
func ClearLogger() {
44-
loggerInstance.Store(noopLogger{})
38+
loggerInstance.Store(nil)
4539
}
4640

4741
// SetLogger sets the logger to the provided logger.
4842
func SetLogger(l Logger) {
49-
loggerInstance.Store(l)
43+
loggerInstance.Store(&l)
5044
}
5145

5246
// GetLogger returns the current logger instance.
5347
func GetLogger() Logger {
54-
return loggerInstance.Load().(Logger)
48+
logger := loggerInstance.Load()
49+
if logger == nil {
50+
return noopLogger{}
51+
}
52+
return *logger
5553
}

0 commit comments

Comments
 (0)