diff --git a/internal/logging/logging.go b/internal/logging/logging.go index 0e95a9875..1c7f54e89 100644 --- a/internal/logging/logging.go +++ b/internal/logging/logging.go @@ -89,14 +89,14 @@ func NewLogger(debugEnabled DebugEnabledFunc) *slog.Logger { // LoggerSetterGetter is an interface that can set and get a logger type LoggerSetterGetter interface { - // SetLogger sets the logger for the object - SetLogger(logger *slog.Logger) - // Logger returns the logger for the object + // SetLogger sets a new slog.Handler + SetLogger(newLogger slog.Handler) + // Logger returns the slog.Logger created from the slog.Handler Logger() *slog.Logger } 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] } @@ -109,12 +109,12 @@ func (l *LogHolder) Logger() *slog.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 { l.logger.Store(slog.New(slog.DiscardHandler)) // Assume nil as discarding logs return } - l.logger.Store(newLogger) + l.logger.Store(slog.New(newLogger)) } // Ensure LogHolder implements LoggerSetterGetter diff --git a/pkg/action/action.go b/pkg/action/action.go index 446dcd79d..04afdb133 100644 --- a/pkg/action/action.go +++ b/pkg/action/action.go @@ -119,7 +119,7 @@ type Configuration struct { func NewConfiguration() *Configuration { c := &Configuration{} - c.SetLogger(slog.Default()) + c.SetLogger(slog.Default().Handler()) return c } @@ -494,7 +494,7 @@ func (cfg *Configuration) recordRelease(r *release.Release) { // Init initializes the action configuration func (cfg *Configuration) Init(getter genericclioptions.RESTClientGetter, namespace, helmDriver string) error { kc := kube.New(getter) - kc.SetLogger(cfg.Logger()) + kc.SetLogger(cfg.Logger().Handler()) lazyClient := &lazyClient{ namespace: namespace, @@ -505,11 +505,11 @@ func (cfg *Configuration) Init(getter genericclioptions.RESTClientGetter, namesp switch helmDriver { case "secret", "secrets", "": d := driver.NewSecrets(newSecretClient(lazyClient)) - d.SetLogger(cfg.Logger()) + d.SetLogger(cfg.Logger().Handler()) store = storage.Init(d) case "configmap", "configmaps": d := driver.NewConfigMaps(newConfigMapClient(lazyClient)) - d.SetLogger(cfg.Logger()) + d.SetLogger(cfg.Logger().Handler()) store = storage.Init(d) case "memory": var d *driver.Memory @@ -524,7 +524,7 @@ func (cfg *Configuration) Init(getter genericclioptions.RESTClientGetter, namesp if d == nil { d = driver.NewMemory() } - d.SetLogger(cfg.Logger()) + d.SetLogger(cfg.Logger().Handler()) d.SetNamespace(namespace) store = storage.Init(d) case "sql": @@ -535,7 +535,7 @@ func (cfg *Configuration) Init(getter genericclioptions.RESTClientGetter, namesp if err != nil { return fmt.Errorf("unable to instantiate SQL driver: %w", err) } - d.SetLogger(cfg.Logger()) + d.SetLogger(cfg.Logger().Handler()) store = storage.Init(d) default: return fmt.Errorf("unknown driver %q", helmDriver) diff --git a/pkg/kube/client.go b/pkg/kube/client.go index 9fe26bcc9..4442a0d91 100644 --- a/pkg/kube/client.go +++ b/pkg/kube/client.go @@ -182,7 +182,7 @@ func New(getter genericclioptions.RESTClientGetter) *Client { c := &Client{ Factory: factory, } - c.SetLogger(slog.Default()) + c.SetLogger(slog.Default().Handler()) return c } diff --git a/pkg/storage/driver/cfgmaps.go b/pkg/storage/driver/cfgmaps.go index 81e22ef40..5af432d8a 100644 --- a/pkg/storage/driver/cfgmaps.go +++ b/pkg/storage/driver/cfgmaps.go @@ -56,7 +56,7 @@ func NewConfigMaps(impl corev1.ConfigMapInterface) *ConfigMaps { c := &ConfigMaps{ impl: impl, } - c.SetLogger(slog.Default()) + c.SetLogger(slog.Default().Handler()) return c } diff --git a/pkg/storage/driver/memory.go b/pkg/storage/driver/memory.go index ec7470aac..7ea4a014a 100644 --- a/pkg/storage/driver/memory.go +++ b/pkg/storage/driver/memory.go @@ -51,7 +51,7 @@ type Memory struct { // NewMemory initializes a new memory driver. func NewMemory() *Memory { m := &Memory{cache: map[string]memReleases{}, namespace: "default"} - m.SetLogger(slog.Default()) + m.SetLogger(slog.Default().Handler()) return m } diff --git a/pkg/storage/driver/secrets.go b/pkg/storage/driver/secrets.go index 2c29c436b..85f3497e7 100644 --- a/pkg/storage/driver/secrets.go +++ b/pkg/storage/driver/secrets.go @@ -55,7 +55,7 @@ func NewSecrets(impl corev1.SecretInterface) *Secrets { s := &Secrets{ impl: impl, } - s.SetLogger(slog.Default()) + s.SetLogger(slog.Default().Handler()) return s } diff --git a/pkg/storage/driver/sql.go b/pkg/storage/driver/sql.go index c1e73e2dd..b6ea3916d 100644 --- a/pkg/storage/driver/sql.go +++ b/pkg/storage/driver/sql.go @@ -296,7 +296,7 @@ func NewSQL(connectionString string, namespace string) (*SQL, error) { } driver.namespace = namespace - driver.SetLogger(slog.Default()) + driver.SetLogger(slog.Default().Handler()) return driver, nil } diff --git a/pkg/storage/storage.go b/pkg/storage/storage.go index d8b141dc9..07dc12c7b 100644 --- a/pkg/storage/storage.go +++ b/pkg/storage/storage.go @@ -341,10 +341,10 @@ func Init(d driver.Driver) *Storage { // Get logger from driver if it implements the LoggerSetterGetter interface if ls, ok := d.(logging.LoggerSetterGetter); ok { - ls.SetLogger(s.Logger()) + ls.SetLogger(s.Logger().Handler()) } else { // If the driver does not implement the LoggerSetterGetter interface, set the default logger - s.SetLogger(slog.Default()) + s.SetLogger(slog.Default().Handler()) } return s }