mirror of
https://github.com/int128/kubelogin.git
synced 2026-05-12 19:06:54 +00:00
55 lines
1.0 KiB
Go
55 lines
1.0 KiB
Go
package logger
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/int128/kubelogin/pkg/infrastructure/logger"
|
|
"github.com/spf13/pflag"
|
|
)
|
|
|
|
func New(t testingLogger) *Logger {
|
|
return &Logger{t: t}
|
|
}
|
|
|
|
type testingLogger interface {
|
|
Logf(format string, v ...interface{})
|
|
}
|
|
|
|
// Logger provides logging facility using testing.T.
|
|
type Logger struct {
|
|
t testingLogger
|
|
maxLevel int
|
|
}
|
|
|
|
func (l *Logger) AddFlags(f *pflag.FlagSet) {
|
|
f.IntVarP(&l.maxLevel, "v", "v", 0, "dummy flag used in the tests")
|
|
}
|
|
|
|
func (l *Logger) Printf(format string, args ...interface{}) {
|
|
l.t.Logf(format, args...)
|
|
}
|
|
|
|
func (l *Logger) V(level int) logger.Verbose {
|
|
if l.IsEnabled(level) {
|
|
return &verbose{l.t, level}
|
|
}
|
|
return &noopVerbose{}
|
|
}
|
|
|
|
func (l *Logger) IsEnabled(level int) bool {
|
|
return level <= l.maxLevel
|
|
}
|
|
|
|
type verbose struct {
|
|
t testingLogger
|
|
level int
|
|
}
|
|
|
|
func (v *verbose) Infof(format string, args ...interface{}) {
|
|
v.t.Logf(fmt.Sprintf("I%d] ", v.level)+format, args...)
|
|
}
|
|
|
|
type noopVerbose struct{}
|
|
|
|
func (*noopVerbose) Infof(string, ...interface{}) {}
|