@@ -31,6 +31,8 @@ import (
3131	_ "k8s.io/client-go/plugin/pkg/client/auth/gcp" 
3232	"k8s.io/client-go/tools/leaderelection/resourcelock" 
3333	cliflag "k8s.io/component-base/cli/flag" 
34+ 	"k8s.io/component-base/logs" 
35+ 	_ "k8s.io/component-base/logs/json/register" 
3436	"k8s.io/klog/v2" 
3537	"k8s.io/klog/v2/klogr" 
3638	ctrl "sigs.k8s.io/controller-runtime" 
@@ -64,11 +66,10 @@ var (
6466	healthAddr            string 
6567	webhookPort           int 
6668	webhookCertDir        string 
69+ 	logOptions            =  logs .NewOptions ()
6770)
6871
6972func  init () {
70- 	klog .InitFlags (nil )
71- 
7273	_  =  scheme .AddToScheme (myscheme )
7374	_  =  infrav1alpha3 .AddToScheme (myscheme )
7475	_  =  infrav1alpha4 .AddToScheme (myscheme )
@@ -82,6 +83,9 @@ func init() {
8283}
8384
8485func  initFlags (fs  * pflag.FlagSet ) {
86+ 	logs .AddFlags (fs , logs .SkipLoggingConfigurationFlags ())
87+ 	logOptions .AddFlags (fs )
88+ 
8589	fs .StringVar (& metricsBindAddr , "metrics-bind-addr" , "localhost:8080" ,
8690		"The address the metric endpoint binds to." )
8791	fs .IntVar (& concurrency , "concurrency" , 10 ,
@@ -105,6 +109,7 @@ func initFlags(fs *pflag.FlagSet) {
105109func  main () {
106110	rand .Seed (time .Now ().UnixNano ())
107111	if  _ , err  :=  os .ReadDir ("/tmp/" ); err  !=  nil  {
112+ 		setupLog .Error (err , "unable to start manager" )
108113		os .Exit (1 )
109114	}
110115
@@ -113,7 +118,19 @@ func main() {
113118	pflag .CommandLine .SetNormalizeFunc (cliflag .WordSepNormalizeFunc )
114119	pflag .Parse ()
115120
116- 	ctrl .SetLogger (klogr .New ())
121+ 	if  err  :=  logOptions .ValidateAndApply (); err  !=  nil  {
122+ 		setupLog .Error (err , "unable to start manager" )
123+ 		os .Exit (1 )
124+ 	}
125+ 
126+ 	// The JSON log format requires the Klog format in klog, otherwise log lines 
127+ 	// are serialized twice, e.g.: 
128+ 	// { ... "msg":"controller/cluster \"msg\"=\"Starting workers\"\n"} 
129+ 	if  logOptions .Config .Format  ==  logs .JSONLogFormat  {
130+ 		ctrl .SetLogger (klogr .NewWithOptions (klogr .WithFormat (klogr .FormatKlog )))
131+ 	} else  {
132+ 		ctrl .SetLogger (klogr .New ())
133+ 	}
117134
118135	if  profilerAddress  !=  ""  {
119136		klog .Infof ("Profiler listening for requests at %s" , profilerAddress )
0 commit comments