@@ -22,9 +22,14 @@ import (
22
22
23
23
"github.com/spf13/cobra"
24
24
cliflag "k8s.io/component-base/cli/flag"
25
+ "k8s.io/component-base/logs"
26
+ logsv1 "k8s.io/component-base/logs/api/v1"
25
27
"k8s.io/component-base/term"
28
+ "k8s.io/klog/v2"
29
+ controllerruntime "sigs.k8s.io/controller-runtime"
26
30
27
31
"github.com/karmada-io/karmada/cmd/metrics-adapter/app/options"
32
+ "github.com/karmada-io/karmada/pkg/features"
28
33
"github.com/karmada-io/karmada/pkg/sharedcli"
29
34
"github.com/karmada-io/karmada/pkg/sharedcli/klogflag"
30
35
"github.com/karmada-io/karmada/pkg/util/names"
@@ -33,7 +38,17 @@ import (
33
38
34
39
// NewMetricsAdapterCommand creates a *cobra.Command object with default parameters
35
40
func NewMetricsAdapterCommand (ctx context.Context ) * cobra.Command {
41
+ logConfig := logsv1 .NewLoggingConfiguration ()
42
+ fss := cliflag.NamedFlagSets {}
43
+
44
+ logsFlagSet := fss .FlagSet ("logs" )
45
+ logs .AddFlags (logsFlagSet , logs .SkipLoggingConfigurationFlags ())
46
+ logsv1 .AddFlags (logConfig , logsFlagSet )
47
+ klogflag .Add (logsFlagSet )
48
+
49
+ genericFlagSet := fss .FlagSet ("generic" )
36
50
opts := options .NewOptions ()
51
+ opts .AddFlags (genericFlagSet )
37
52
38
53
cmd := & cobra.Command {
39
54
Use : names .KarmadaMetricsAdapterComponentName ,
@@ -50,6 +65,19 @@ func NewMetricsAdapterCommand(ctx context.Context) *cobra.Command {
50
65
}
51
66
return nil
52
67
},
68
+ PersistentPreRunE : func (_ * cobra.Command , _ []string ) error {
69
+ if err := logsv1 .ValidateAndApply (logConfig , features .FeatureGate ); err != nil {
70
+ return err
71
+ }
72
+ logs .InitLogs ()
73
+ // Starting from version 0.15.0, controller-runtime expects its consumers to set a logger through log.SetLogger.
74
+ // If SetLogger is not called within the first 30 seconds of a binaries lifetime, it will get
75
+ // set to a NullLogSink and report an error. Here's to silence the "log.SetLogger(...) was never called; logs will not be displayed" error
76
+ // by setting a logger through log.SetLogger.
77
+ // More info refer to: https://github.com/karmada-io/karmada/pull/4885.
78
+ controllerruntime .SetLogger (klog .Background ())
79
+ return nil
80
+ },
53
81
Args : func (cmd * cobra.Command , args []string ) error {
54
82
for _ , arg := range args {
55
83
if len (arg ) > 0 {
@@ -60,15 +88,6 @@ func NewMetricsAdapterCommand(ctx context.Context) *cobra.Command {
60
88
},
61
89
}
62
90
63
- fss := cliflag.NamedFlagSets {}
64
-
65
- genericFlagSet := fss .FlagSet ("generic" )
66
- opts .AddFlags (genericFlagSet )
67
-
68
- // Set klog flags
69
- logsFlagSet := fss .FlagSet ("logs" )
70
- klogflag .Add (logsFlagSet )
71
-
72
91
cmd .AddCommand (sharedcommand .NewCmdVersion (names .KarmadaMetricsAdapterComponentName ))
73
92
cmd .Flags ().AddFlagSet (genericFlagSet )
74
93
cmd .Flags ().AddFlagSet (logsFlagSet )
0 commit comments