From b642bca8f61dfbe19e98ad75b73b2eaac2511405 Mon Sep 17 00:00:00 2001 From: Benoit Tigeot Date: Tue, 25 Mar 2025 17:16:21 +0100 Subject: [PATCH] Provide an adapter to easily pass a slog.Default() ``` helmClient.Log = NewSlogAdapter(slog.Default()) ``` Signed-off-by: Benoit Tigeot --- pkg/kube/logger.go | 20 ++++++++++++++++++-- pkg/kube/ready.go | 4 +--- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/pkg/kube/logger.go b/pkg/kube/logger.go index 357a6827f..00724c7c3 100644 --- a/pkg/kube/logger.go +++ b/pkg/kube/logger.go @@ -16,17 +16,33 @@ limitations under the License. package kube +import "log/slog" + // Logger defines a minimal logging interface compatible with slog.Logger type Logger interface { Debug(msg string, args ...any) Warn(msg string, args ...any) } -// NopLogger is a logger that does nothing +type SlogAdapter struct { + logger *slog.Logger +} + type NopLogger struct{} -// Debug implements the Logger interface func (n NopLogger) Debug(msg string, args ...any) {} func (n NopLogger) Warn(msg string, args ...any) {} var nopLogger = NopLogger{} + +func (a SlogAdapter) Debug(msg string, args ...any) { + a.logger.Debug(msg, args...) +} + +func (a SlogAdapter) Warn(msg string, args ...any) { + a.logger.Warn(msg, args...) +} + +func NewSlogAdapter(logger *slog.Logger) Logger { + return SlogAdapter{logger: logger} +} diff --git a/pkg/kube/ready.go b/pkg/kube/ready.go index 2814aa72e..871bd4eee 100644 --- a/pkg/kube/ready.go +++ b/pkg/kube/ready.go @@ -19,8 +19,6 @@ package kube // import "helm.sh/helm/v4/pkg/kube" import ( "context" "fmt" - "io" - "log/slog" appsv1 "k8s.io/api/apps/v1" batchv1 "k8s.io/api/batch/v1" @@ -65,7 +63,7 @@ func NewReadyChecker(cl kubernetes.Interface, logger Logger, opts ...ReadyChecke log: logger, } if c.log == nil { - c.log = slog.New(slog.NewTextHandler(io.Discard, nil)) + c.log = nopLogger } for _, opt := range opts { opt(&c)