@@ -3,6 +3,7 @@ package main
3
3
import (
4
4
"fmt"
5
5
"os"
6
+ "strings"
6
7
"time"
7
8
8
9
smiclientset "github.com/servicemeshinterface/smi-sdk-go/pkg/gen/client/split/clientset/versioned"
@@ -36,14 +37,17 @@ import (
36
37
37
38
const (
38
39
// CLIName is the name of the CLI
39
- cliName = "argo-rollouts"
40
+ cliName = "argo-rollouts"
41
+ jsonFormat = "json"
42
+ textFormat = "text"
40
43
)
41
44
42
45
func newCommand () * cobra.Command {
43
46
var (
44
47
clientConfig clientcmd.ClientConfig
45
48
rolloutResyncPeriod int64
46
49
logLevel string
50
+ logFormat string
47
51
klogLevel int
48
52
metricsPort int
49
53
healthzPort int
@@ -76,10 +80,9 @@ func newCommand() *cobra.Command {
76
80
return nil
77
81
}
78
82
setLogLevel (logLevel )
79
- formatter := & log. TextFormatter {
80
- FullTimestamp : true ,
83
+ if logFormat != "" {
84
+ log . SetFormatter ( createFormatter ( logFormat ))
81
85
}
82
- log .SetFormatter (formatter )
83
86
logutil .SetKLogLevel (klogLevel )
84
87
log .WithField ("version" , version .GetVersion ()).Info ("Argo Rollouts starting" )
85
88
@@ -215,6 +218,7 @@ func newCommand() *cobra.Command {
215
218
command .Flags ().Int64Var (& rolloutResyncPeriod , "rollout-resync" , controller .DefaultRolloutResyncPeriod , "Time period in seconds for rollouts resync." )
216
219
command .Flags ().BoolVar (& namespaced , "namespaced" , false , "runs controller in namespaced mode (does not require cluster RBAC)" )
217
220
command .Flags ().StringVar (& logLevel , "loglevel" , "info" , "Set the logging level. One of: debug|info|warn|error" )
221
+ command .Flags ().StringVar (& logFormat , "logformat" , "" , "Set the logging format. One of: text|json" )
218
222
command .Flags ().IntVar (& klogLevel , "kloglevel" , 0 , "Set the klog logging level" )
219
223
command .Flags ().IntVar (& metricsPort , "metricsport" , controller .DefaultMetricsPort , "Set the port the metrics endpoint should be exposed over" )
220
224
command .Flags ().IntVar (& healthzPort , "healthzPort" , controller .DefaultHealthzPort , "Set the port the healthz endpoint should be exposed over" )
@@ -270,6 +274,25 @@ func setLogLevel(logLevel string) {
270
274
log .SetLevel (level )
271
275
}
272
276
277
+ func createFormatter (logFormat string ) log.Formatter {
278
+ var formatType log.Formatter
279
+ switch strings .ToLower (logFormat ) {
280
+ case jsonFormat :
281
+ formatType = & log.JSONFormatter {}
282
+ case textFormat :
283
+ formatType = & log.TextFormatter {
284
+ FullTimestamp : true ,
285
+ }
286
+ default :
287
+ log .Infof ("Unknown format: %s. Using text logformat" , logFormat )
288
+ formatType = & log.TextFormatter {
289
+ FullTimestamp : true ,
290
+ }
291
+ }
292
+
293
+ return formatType
294
+ }
295
+
273
296
func checkError (err error ) {
274
297
if err != nil {
275
298
log .Fatal (err )
0 commit comments