mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-24 04:06:03 +00:00
Merge pull request #114680 from pohly/log-go-flag-support
k8s.io/component-base/logs: fix usage through Go flag package
This commit is contained in:
commit
eff6b9f648
@ -19,6 +19,7 @@ package v1
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"flag"
|
||||
"testing"
|
||||
|
||||
"github.com/go-logr/logr"
|
||||
@ -100,6 +101,59 @@ func TestOptions(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestFlagSet(t *testing.T) {
|
||||
t.Run("pflag", func(t *testing.T) {
|
||||
newOptions := NewLoggingConfiguration()
|
||||
var fs pflag.FlagSet
|
||||
AddFlags(newOptions, &fs)
|
||||
var buffer bytes.Buffer
|
||||
fs.SetOutput(&buffer)
|
||||
fs.PrintDefaults()
|
||||
// Expected (Go 1.19, pflag v1.0.5):
|
||||
// --logging-format string Sets the log format. Permitted formats: "text". (default "text")
|
||||
// --log-flush-frequency duration Maximum number of seconds between log flushes (default 5s)
|
||||
// -v, --v Level number for the log level verbosity
|
||||
// --vmodule pattern=N,... comma-separated list of pattern=N settings for file-filtered logging (only works for text log format)
|
||||
assert.Regexp(t, `.*--logging-format.*default.*text.*
|
||||
.*--log-flush-frequency.*default 5s.*
|
||||
.*-v.*--v.*
|
||||
.*--vmodule.*pattern=N.*
|
||||
`, buffer.String())
|
||||
})
|
||||
|
||||
t.Run("flag", func(t *testing.T) {
|
||||
newOptions := NewLoggingConfiguration()
|
||||
var pfs pflag.FlagSet
|
||||
AddFlags(newOptions, &pfs)
|
||||
var fs flag.FlagSet
|
||||
pfs.VisitAll(func(f *pflag.Flag) {
|
||||
fs.Var(f.Value, f.Name, f.Usage)
|
||||
})
|
||||
var buffer bytes.Buffer
|
||||
fs.SetOutput(&buffer)
|
||||
fs.PrintDefaults()
|
||||
// Expected (Go 1.19):
|
||||
// -log-flush-frequency value
|
||||
// Maximum number of seconds between log flushes (default 5s)
|
||||
// -logging-format value
|
||||
// Sets the log format. Permitted formats: "text". (default text)
|
||||
// -v value
|
||||
// number for the log level verbosity
|
||||
// -vmodule value
|
||||
// comma-separated list of pattern=N settings for file-filtered logging (only works for text log format)
|
||||
assert.Regexp(t, `.*-log-flush-frequency.*
|
||||
.*default 5s.*
|
||||
.*-logging-format.*
|
||||
.*default.*text.*
|
||||
.*-v.*
|
||||
.*
|
||||
.*-vmodule.*
|
||||
.*
|
||||
`, buffer.String())
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
func TestContextualLogging(t *testing.T) {
|
||||
t.Run("enabled", func(t *testing.T) {
|
||||
testContextualLogging(t, true)
|
||||
|
@ -36,6 +36,9 @@ type vmoduleConfigurationPFlag struct {
|
||||
|
||||
// String returns the -vmodule parameter (comma-separated list of pattern=N).
|
||||
func (wrapper vmoduleConfigurationPFlag) String() string {
|
||||
if wrapper.value == nil {
|
||||
return ""
|
||||
}
|
||||
var patterns []string
|
||||
for _, item := range *wrapper.value {
|
||||
patterns = append(patterns, fmt.Sprintf("%s=%d", item.FilePattern, item.Verbosity))
|
||||
@ -82,10 +85,16 @@ type verbosityLevelPflag struct {
|
||||
}
|
||||
|
||||
func (wrapper verbosityLevelPflag) String() string {
|
||||
if wrapper.value == nil {
|
||||
return "0"
|
||||
}
|
||||
return strconv.FormatInt(int64(*wrapper.value), 10)
|
||||
}
|
||||
|
||||
func (wrapper verbosityLevelPflag) Get() interface{} {
|
||||
if wrapper.value == nil {
|
||||
return VerbosityLevel(0)
|
||||
}
|
||||
return *wrapper.value
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user