Merge pull request #31723 from matheuscscp/fix-storage-logger

bugfix(logging): fix storage not getting logger from driver
pull/31730/head
George Jenkins 7 days ago committed by GitHub
commit 50546ef665
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

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

@ -17,8 +17,10 @@ limitations under the License.
package storage // import "helm.sh/helm/v4/pkg/storage"
import (
"context"
"errors"
"fmt"
"log/slog"
"reflect"
"testing"
@ -579,3 +581,35 @@ func assertErrNil(eh func(args ...interface{}), err error, message string) {
eh(fmt.Sprintf("%s: %q", message, err))
}
}
func TestStorageGetsLoggerFromDriver(t *testing.T) {
d := driver.NewMemory()
l := &mockSLogHandler{}
d.SetLogger(l)
s := Init(d)
_, _ = s.Get("doesnt-matter", 123)
if !l.Called {
t.Fatalf("Expected storage to use driver's logger, but it did not")
}
}
type mockSLogHandler struct {
Called bool
}
func (m *mockSLogHandler) Enabled(context.Context, slog.Level) bool {
return true
}
func (m *mockSLogHandler) Handle(context.Context, slog.Record) error {
m.Called = true
return nil
}
func (m *mockSLogHandler) WithAttrs([]slog.Attr) slog.Handler {
return m
}
func (m *mockSLogHandler) WithGroup(string) slog.Handler {
return m
}

Loading…
Cancel
Save