Provide an adapter to easily pass a slog.Default()

```
helmClient.Log = NewSlogAdapter(slog.Default())
```

Signed-off-by: Benoit Tigeot <benoit.tigeot@lifen.fr>
pull/30708/head
Benoit Tigeot 6 months ago
parent d6d7cff417
commit b642bca8f6
No known key found for this signature in database
GPG Key ID: 8E6D4FC8AEBDA62C

@ -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}
}

@ -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)

Loading…
Cancel
Save