mirror of
https://github.com/int128/kubelogin.git
synced 2026-08-23 21:06:15 +00:00
klog v2 defaults -logtostderr to true, which silently ignores -stderrthreshold — all severities are unconditionally sent to stderr. Opt into the fixed behavior introduced in klog v2.140.0 by setting legacy_stderr_threshold_behavior=false so that -stderrthreshold is respected. The default is set to INFO (preserving current behavior); users can now override it on the command line. Ref: kubernetes/klog#212, kubernetes/klog#432 Signed-off-by: Pierluigi Lenoci <pierluigi.lenoci@gmail.com> Signed-off-by: Pierluigi Lenoci <pierluigilenoci@gmail.com> Co-authored-by: Hidetake Iwata <int128@gmail.com>
66 lines
1.4 KiB
Go
66 lines
1.4 KiB
Go
package logger
|
|
|
|
import (
|
|
"flag"
|
|
"log"
|
|
"os"
|
|
|
|
"github.com/google/wire"
|
|
"github.com/spf13/pflag"
|
|
"k8s.io/klog/v2"
|
|
)
|
|
|
|
// Set provides an implementation and interface for Logger.
|
|
var Set = wire.NewSet(
|
|
New,
|
|
)
|
|
|
|
// New returns a Logger with the standard log.Logger and klog.
|
|
func New() Interface {
|
|
return &Logger{
|
|
goLogger: log.New(os.Stderr, "", 0),
|
|
}
|
|
}
|
|
|
|
type Interface interface {
|
|
AddFlags(f *pflag.FlagSet)
|
|
Printf(format string, args ...interface{})
|
|
V(level int) Verbose
|
|
IsEnabled(level int) bool
|
|
}
|
|
|
|
type Verbose interface {
|
|
Infof(format string, args ...interface{})
|
|
}
|
|
|
|
type goLogger interface {
|
|
Printf(format string, v ...interface{})
|
|
}
|
|
|
|
// Logger provides logging facility using log.Logger and klog.
|
|
type Logger struct {
|
|
goLogger
|
|
}
|
|
|
|
// AddFlags adds the flags such as -v.
|
|
func (*Logger) AddFlags(f *pflag.FlagSet) {
|
|
gf := flag.NewFlagSet("", flag.ContinueOnError)
|
|
klog.InitFlags(gf)
|
|
// Opt into the new klog behavior so that -stderrthreshold is honored even
|
|
// when -logtostderr=true (the default).
|
|
// Ref: kubernetes/klog#212, kubernetes/klog#432
|
|
_ = gf.Set("legacy_stderr_threshold_behavior", "false")
|
|
_ = gf.Set("stderrthreshold", "INFO")
|
|
f.AddGoFlagSet(gf)
|
|
}
|
|
|
|
// V returns a logger enabled only if the level is enabled.
|
|
func (*Logger) V(level int) Verbose {
|
|
return klog.V(klog.Level(level))
|
|
}
|
|
|
|
// IsEnabled returns true if the level is enabled.
|
|
func (*Logger) IsEnabled(level int) bool {
|
|
return klog.V(klog.Level(level)).Enabled()
|
|
}
|