mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-31 23:37:01 +00:00
e2e framework: configure Ginkgo logger and klog consistently
Even if the textlogger which writes to Ginkgo is installed as the logger in klog, klog still does some verbosity checks itself (for example, klog.V().Enabled). Therefore the framework has to keep the verbosity settings in the textlogger and in klog consistent. This is done by wrapping the Set call instead of replacing it.
This commit is contained in:
parent
ff541e7924
commit
feb27b9907
@ -49,14 +49,16 @@ var (
|
||||
|
||||
func init() {
|
||||
// ktesting and testinit already registered the -v and -vmodule
|
||||
// command line flags. To configure the textlogger instead, we
|
||||
// need to swap out the flag.Value for those.
|
||||
// command line flags. To configure the textlogger and klog
|
||||
// consistently, we need to intercept the Set call. This
|
||||
// can be done by swapping out the flag.Value for the -v and
|
||||
// -vmodule flags with a wrapper which calls both.
|
||||
var fs flag.FlagSet
|
||||
logConfig.AddFlags(&fs)
|
||||
fs.VisitAll(func(loggerFlag *flag.Flag) {
|
||||
klogFlag := flag.CommandLine.Lookup(loggerFlag.Name)
|
||||
if klogFlag != nil {
|
||||
klogFlag.Value = loggerFlag.Value
|
||||
klogFlag.Value = &valueChain{Value: loggerFlag.Value, parentValue: klogFlag.Value}
|
||||
}
|
||||
})
|
||||
|
||||
@ -75,6 +77,21 @@ func init() {
|
||||
klog.SetLoggerWithOptions(ginkgoLogger, opts...)
|
||||
}
|
||||
|
||||
type valueChain struct {
|
||||
flag.Value
|
||||
parentValue flag.Value
|
||||
}
|
||||
|
||||
func (v *valueChain) Set(value string) error {
|
||||
if err := v.Value.Set(value); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := v.parentValue.Set(value); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func unwind(skip int) (string, int) {
|
||||
location := ginkgotypes.NewCodeLocation(skip + 1)
|
||||
return location.FileName, location.LineNumber
|
||||
|
Loading…
Reference in New Issue
Block a user