mirror of
https://github.com/mudler/luet.git
synced 2025-07-02 02:01:56 +00:00
🎨 Allow to pass by a logger interface to context
This commit is contained in:
parent
d6ae727d79
commit
edd2275bf5
@ -30,7 +30,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type Context struct {
|
type Context struct {
|
||||||
*logger.Logger
|
types.Logger
|
||||||
context.Context
|
context.Context
|
||||||
types.GarbageCollector
|
types.GarbageCollector
|
||||||
Config *types.LuetConfig
|
Config *types.LuetConfig
|
||||||
@ -122,13 +122,14 @@ func (c *Context) WithLoggingContext(name string) types.Context {
|
|||||||
ctxCopy.Config = &configCopy
|
ctxCopy.Config = &configCopy
|
||||||
ctxCopy.annotations = ctx.annotations
|
ctxCopy.annotations = ctx.annotations
|
||||||
|
|
||||||
ctxCopy.Logger, _ = c.Logger.Copy(logger.WithContext(name))
|
ctxCopy.Logger, _ = c.Logger.Copy()
|
||||||
|
ctxCopy.Logger.SetContext(name)
|
||||||
|
|
||||||
return ctxCopy
|
return ctxCopy
|
||||||
}
|
}
|
||||||
|
|
||||||
// Copy returns a context copy with a reset logging context
|
// 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("")
|
return c.WithLoggingContext("")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -25,6 +25,7 @@ import (
|
|||||||
|
|
||||||
log "github.com/ipfs/go-log/v2"
|
log "github.com/ipfs/go-log/v2"
|
||||||
"github.com/kyokomi/emoji"
|
"github.com/kyokomi/emoji"
|
||||||
|
"github.com/mudler/luet/pkg/api/core/types"
|
||||||
"github.com/pterm/pterm"
|
"github.com/pterm/pterm"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
"go.uber.org/zap/zapcore"
|
"go.uber.org/zap/zapcore"
|
||||||
@ -114,18 +115,19 @@ func New(opts ...LoggerOptions) (*Logger, error) {
|
|||||||
return l, nil
|
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
|
c := *l
|
||||||
copy := &c
|
copy := &c
|
||||||
for _, o := range opts {
|
|
||||||
if err := o(copy); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return copy, nil
|
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) {
|
func joinMsg(args ...interface{}) (message string) {
|
||||||
for _, m := range args {
|
for _, m := range args {
|
||||||
message += " " + fmt.Sprintf("%v", m)
|
message += " " + fmt.Sprintf("%v", m)
|
||||||
|
@ -21,7 +21,6 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
|
|
||||||
"github.com/gookit/color"
|
"github.com/gookit/color"
|
||||||
"github.com/mudler/luet/pkg/api/core/logger"
|
|
||||||
. "github.com/mudler/luet/pkg/api/core/logger"
|
. "github.com/mudler/luet/pkg/api/core/logger"
|
||||||
. "github.com/onsi/ginkgo/v2"
|
. "github.com/onsi/ginkgo/v2"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
@ -84,11 +83,12 @@ var _ = Describe("Context and logging", func() {
|
|||||||
|
|
||||||
It("returns copies with logged context", func() {
|
It("returns copies with logged context", func() {
|
||||||
l, err := New(WithLevel("debug"))
|
l, err := New(WithLevel("debug"))
|
||||||
l, _ = l.Copy(logger.WithContext("bazzz"))
|
l2, _ := l.Copy()
|
||||||
|
l2.SetContext("bazzz")
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
|
||||||
Expect(captureStdout(func(w io.Writer) {
|
Expect(captureStdout(func(w io.Writer) {
|
||||||
l.Debug("bar")
|
l2.Debug("bar")
|
||||||
})).To(ContainSubstring("(bazzz) bar"))
|
})).To(ContainSubstring("(bazzz) bar"))
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ type Context interface {
|
|||||||
Logger
|
Logger
|
||||||
GarbageCollector
|
GarbageCollector
|
||||||
GetConfig() LuetConfig
|
GetConfig() LuetConfig
|
||||||
Copy() Context
|
Clone() Context
|
||||||
// SetAnnotation sets generic annotations to hold in a context
|
// SetAnnotation sets generic annotations to hold in a context
|
||||||
SetAnnotation(s string, i interface{})
|
SetAnnotation(s string, i interface{})
|
||||||
|
|
||||||
|
@ -33,7 +33,8 @@ type Logger interface {
|
|||||||
Fatalf(string, ...interface{})
|
Fatalf(string, ...interface{})
|
||||||
Panicf(string, ...interface{})
|
Panicf(string, ...interface{})
|
||||||
Tracef(string, ...interface{})
|
Tracef(string, ...interface{})
|
||||||
|
Copy() (Logger, error)
|
||||||
|
SetContext(string)
|
||||||
SpinnerStop()
|
SpinnerStop()
|
||||||
Spinner()
|
Spinner()
|
||||||
Ask() bool
|
Ask() bool
|
||||||
|
@ -638,7 +638,7 @@ func (l *LuetInstaller) download(syncedRepos Repositories, toDownload map[string
|
|||||||
|
|
||||||
var wg = new(sync.WaitGroup)
|
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
|
// Check if the terminal is big enough to display a progress bar
|
||||||
// https://github.com/pterm/pterm/blob/4c725e56bfd9eb38e1c7b9dec187b50b93baa8bd/progressbar_printer.go#L190
|
// https://github.com/pterm/pterm/blob/4c725e56bfd9eb38e1c7b9dec187b50b93baa8bd/progressbar_printer.go#L190
|
||||||
|
Loading…
Reference in New Issue
Block a user