reinstate use of atomic.Value for holding root logger object

This commit is contained in:
Jared Wasinger 2023-11-22 15:36:52 +08:00
parent 31dcb3daa8
commit 0031bebd98

View file

@ -2,11 +2,12 @@ package log
import ( import (
"os" "os"
"sync/atomic"
"golang.org/x/exp/slog" "golang.org/x/exp/slog"
) )
var root Logger var root atomic.Value
func init() { func init() {
defaultLogger := &logger{slog.New(DiscardHandler())} defaultLogger := &logger{slog.New(DiscardHandler())}
@ -15,13 +16,14 @@ func init() {
// SetDefault sets the default global logger // SetDefault sets the default global logger
func SetDefault(l Logger) { func SetDefault(l Logger) {
root = l root.Store(l)
slog.SetDefault(root.Inner()) slog.SetDefault(l.Inner())
} }
// Root returns the root logger // Root returns the root logger
func Root() Logger { func Root() Logger {
return root res, _ := root.Load().(Logger)
return res
} }
// The following functions bypass the exported logger methods (logger.Debug, // The following functions bypass the exported logger methods (logger.Debug,