@@ -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