Refactor logging functionality to use slog.Handler

Signed-off-by: Evans Mungai <mbuevans@gmail.com>
pull/31411/head
Evans Mungai 11 months ago
parent 5ab4ca5490
commit b6eca1c0f1
No known key found for this signature in database
GPG Key ID: BBEB812143DD14E1

@ -89,14 +89,14 @@ func NewLogger(debugEnabled DebugEnabledFunc) *slog.Logger {
// LoggerSetterGetter is an interface that can set and get a logger // LoggerSetterGetter is an interface that can set and get a logger
type LoggerSetterGetter interface { type LoggerSetterGetter interface {
// SetLogger sets the logger for the object // SetLogger sets a new slog.Handler
SetLogger(logger *slog.Logger) SetLogger(newLogger slog.Handler)
// Logger returns the logger for the object // Logger returns the slog.Logger created from the slog.Handler
Logger() *slog.Logger Logger() *slog.Logger
} }
type LogHolder struct { type LogHolder struct {
// logger is an slog.Logger pointer to use the driver // logger is an atomic.Pointer[slog.Logger] to store the slog.Logger
logger atomic.Pointer[slog.Logger] logger atomic.Pointer[slog.Logger]
} }
@ -109,12 +109,12 @@ func (l *LogHolder) Logger() *slog.Logger {
} }
// SetLogger sets the logger for the LogHolder. If nil, sets the default logger. // SetLogger sets the logger for the LogHolder. If nil, sets the default logger.
func (l *LogHolder) SetLogger(newLogger *slog.Logger) { func (l *LogHolder) SetLogger(newLogger slog.Handler) {
if newLogger == nil { if newLogger == nil {
l.logger.Store(slog.New(slog.DiscardHandler)) // Assume nil as discarding logs l.logger.Store(slog.New(slog.DiscardHandler)) // Assume nil as discarding logs
return return
} }
l.logger.Store(newLogger) l.logger.Store(slog.New(newLogger))
} }
// Ensure LogHolder implements LoggerSetterGetter // Ensure LogHolder implements LoggerSetterGetter

@ -119,7 +119,7 @@ type Configuration struct {
func NewConfiguration() *Configuration { func NewConfiguration() *Configuration {
c := &Configuration{} c := &Configuration{}
c.SetLogger(slog.Default()) c.SetLogger(slog.Default().Handler())
return c return c
} }
@ -494,7 +494,7 @@ func (cfg *Configuration) recordRelease(r *release.Release) {
// Init initializes the action configuration // Init initializes the action configuration
func (cfg *Configuration) Init(getter genericclioptions.RESTClientGetter, namespace, helmDriver string) error { func (cfg *Configuration) Init(getter genericclioptions.RESTClientGetter, namespace, helmDriver string) error {
kc := kube.New(getter) kc := kube.New(getter)
kc.SetLogger(cfg.Logger()) kc.SetLogger(cfg.Logger().Handler())
lazyClient := &lazyClient{ lazyClient := &lazyClient{
namespace: namespace, namespace: namespace,
@ -505,11 +505,11 @@ func (cfg *Configuration) Init(getter genericclioptions.RESTClientGetter, namesp
switch helmDriver { switch helmDriver {
case "secret", "secrets", "": case "secret", "secrets", "":
d := driver.NewSecrets(newSecretClient(lazyClient)) d := driver.NewSecrets(newSecretClient(lazyClient))
d.SetLogger(cfg.Logger()) d.SetLogger(cfg.Logger().Handler())
store = storage.Init(d) store = storage.Init(d)
case "configmap", "configmaps": case "configmap", "configmaps":
d := driver.NewConfigMaps(newConfigMapClient(lazyClient)) d := driver.NewConfigMaps(newConfigMapClient(lazyClient))
d.SetLogger(cfg.Logger()) d.SetLogger(cfg.Logger().Handler())
store = storage.Init(d) store = storage.Init(d)
case "memory": case "memory":
var d *driver.Memory var d *driver.Memory
@ -524,7 +524,7 @@ func (cfg *Configuration) Init(getter genericclioptions.RESTClientGetter, namesp
if d == nil { if d == nil {
d = driver.NewMemory() d = driver.NewMemory()
} }
d.SetLogger(cfg.Logger()) d.SetLogger(cfg.Logger().Handler())
d.SetNamespace(namespace) d.SetNamespace(namespace)
store = storage.Init(d) store = storage.Init(d)
case "sql": case "sql":
@ -535,7 +535,7 @@ func (cfg *Configuration) Init(getter genericclioptions.RESTClientGetter, namesp
if err != nil { if err != nil {
return fmt.Errorf("unable to instantiate SQL driver: %w", err) return fmt.Errorf("unable to instantiate SQL driver: %w", err)
} }
d.SetLogger(cfg.Logger()) d.SetLogger(cfg.Logger().Handler())
store = storage.Init(d) store = storage.Init(d)
default: default:
return fmt.Errorf("unknown driver %q", helmDriver) return fmt.Errorf("unknown driver %q", helmDriver)

@ -182,7 +182,7 @@ func New(getter genericclioptions.RESTClientGetter) *Client {
c := &Client{ c := &Client{
Factory: factory, Factory: factory,
} }
c.SetLogger(slog.Default()) c.SetLogger(slog.Default().Handler())
return c return c
} }

@ -56,7 +56,7 @@ func NewConfigMaps(impl corev1.ConfigMapInterface) *ConfigMaps {
c := &ConfigMaps{ c := &ConfigMaps{
impl: impl, impl: impl,
} }
c.SetLogger(slog.Default()) c.SetLogger(slog.Default().Handler())
return c return c
} }

@ -51,7 +51,7 @@ type Memory struct {
// NewMemory initializes a new memory driver. // NewMemory initializes a new memory driver.
func NewMemory() *Memory { func NewMemory() *Memory {
m := &Memory{cache: map[string]memReleases{}, namespace: "default"} m := &Memory{cache: map[string]memReleases{}, namespace: "default"}
m.SetLogger(slog.Default()) m.SetLogger(slog.Default().Handler())
return m return m
} }

@ -55,7 +55,7 @@ func NewSecrets(impl corev1.SecretInterface) *Secrets {
s := &Secrets{ s := &Secrets{
impl: impl, impl: impl,
} }
s.SetLogger(slog.Default()) s.SetLogger(slog.Default().Handler())
return s return s
} }

@ -296,7 +296,7 @@ func NewSQL(connectionString string, namespace string) (*SQL, error) {
} }
driver.namespace = namespace driver.namespace = namespace
driver.SetLogger(slog.Default()) driver.SetLogger(slog.Default().Handler())
return driver, nil return driver, nil
} }

@ -341,10 +341,10 @@ func Init(d driver.Driver) *Storage {
// Get logger from driver if it implements the LoggerSetterGetter interface // Get logger from driver if it implements the LoggerSetterGetter interface
if ls, ok := d.(logging.LoggerSetterGetter); ok { if ls, ok := d.(logging.LoggerSetterGetter); ok {
ls.SetLogger(s.Logger()) ls.SetLogger(s.Logger().Handler())
} else { } else {
// If the driver does not implement the LoggerSetterGetter interface, set the default logger // If the driver does not implement the LoggerSetterGetter interface, set the default logger
s.SetLogger(slog.Default()) s.SetLogger(slog.Default().Handler())
} }
return s return s
} }

Loading…
Cancel
Save