diff --git a/pkg/api/core/context/context.go b/pkg/api/core/context/context.go index c883cf14..9ff2cf33 100644 --- a/pkg/api/core/context/context.go +++ b/pkg/api/core/context/context.go @@ -30,7 +30,7 @@ import ( ) type Context struct { - *logger.Logger + types.Logger context.Context types.GarbageCollector Config *types.LuetConfig @@ -122,13 +122,14 @@ func (c *Context) WithLoggingContext(name string) types.Context { ctxCopy.Config = &configCopy ctxCopy.annotations = ctx.annotations - ctxCopy.Logger, _ = c.Logger.Copy(logger.WithContext(name)) + ctxCopy.Logger, _ = c.Logger.Copy() + ctxCopy.Logger.SetContext(name) return ctxCopy } // Copy returns a context copy with a reset logging context -func (c *Context) Copy() types.Context { +func (c *Context) Clone() types.Context { return c.WithLoggingContext("") } diff --git a/pkg/api/core/logger/logger.go b/pkg/api/core/logger/logger.go index 13bec434..13d1e819 100644 --- a/pkg/api/core/logger/logger.go +++ b/pkg/api/core/logger/logger.go @@ -25,6 +25,7 @@ import ( log "github.com/ipfs/go-log/v2" "github.com/kyokomi/emoji" + "github.com/mudler/luet/pkg/api/core/types" "github.com/pterm/pterm" "go.uber.org/zap" "go.uber.org/zap/zapcore" @@ -114,18 +115,19 @@ func New(opts ...LoggerOptions) (*Logger, error) { return l, nil } -func (l *Logger) Copy(opts ...LoggerOptions) (*Logger, error) { +// Copy returns a copy of the logger +func (l *Logger) Copy() (types.Logger, error) { c := *l copy := &c - for _, o := range opts { - if err := o(copy); err != nil { - return nil, err - } - } return copy, nil } +// SetContext sets the logger context, used to prefix log lines +func (l *Logger) SetContext(name string) { + l.context = name +} + func joinMsg(args ...interface{}) (message string) { for _, m := range args { message += " " + fmt.Sprintf("%v", m) diff --git a/pkg/api/core/logger/logger_test.go b/pkg/api/core/logger/logger_test.go index cec1f596..9c6a3d06 100644 --- a/pkg/api/core/logger/logger_test.go +++ b/pkg/api/core/logger/logger_test.go @@ -21,7 +21,6 @@ import ( "os" "github.com/gookit/color" - "github.com/mudler/luet/pkg/api/core/logger" . "github.com/mudler/luet/pkg/api/core/logger" . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" @@ -84,11 +83,12 @@ var _ = Describe("Context and logging", func() { It("returns copies with logged context", func() { l, err := New(WithLevel("debug")) - l, _ = l.Copy(logger.WithContext("bazzz")) + l2, _ := l.Copy() + l2.SetContext("bazzz") Expect(err).ToNot(HaveOccurred()) Expect(captureStdout(func(w io.Writer) { - l.Debug("bar") + l2.Debug("bar") })).To(ContainSubstring("(bazzz) bar")) }) diff --git a/pkg/api/core/types/context.go b/pkg/api/core/types/context.go index 266ce530..e23cee7b 100644 --- a/pkg/api/core/types/context.go +++ b/pkg/api/core/types/context.go @@ -19,7 +19,7 @@ type Context interface { Logger GarbageCollector GetConfig() LuetConfig - Copy() Context + Clone() Context // SetAnnotation sets generic annotations to hold in a context SetAnnotation(s string, i interface{}) diff --git a/pkg/api/core/types/logger.go b/pkg/api/core/types/logger.go index 0998ef1f..d6525e95 100644 --- a/pkg/api/core/types/logger.go +++ b/pkg/api/core/types/logger.go @@ -33,7 +33,8 @@ type Logger interface { Fatalf(string, ...interface{}) Panicf(string, ...interface{}) Tracef(string, ...interface{}) - + Copy() (Logger, error) + SetContext(string) SpinnerStop() Spinner() Ask() bool diff --git a/pkg/installer/installer.go b/pkg/installer/installer.go index c16a9077..5dde64de 100644 --- a/pkg/installer/installer.go +++ b/pkg/installer/installer.go @@ -638,7 +638,7 @@ func (l *LuetInstaller) download(syncedRepos Repositories, toDownload map[string var wg = new(sync.WaitGroup) - ctx := l.Options.Context.Copy() + ctx := l.Options.Context.Clone() // Check if the terminal is big enough to display a progress bar // https://github.com/pterm/pterm/blob/4c725e56bfd9eb38e1c7b9dec187b50b93baa8bd/progressbar_printer.go#L190