From 104e8ef0500d96137ba922c189ade76f393d08ce Mon Sep 17 00:00:00 2001 From: Alex Wong Date: Tue, 5 Mar 2019 14:30:23 +0800 Subject: [PATCH] Add options for customizing threadiness, logger encoding, and global logger level --- cmd/flagger/main.go | 5 ++++- pkg/logging/logger.go | 20 +++++++++++++++++++- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/cmd/flagger/main.go b/cmd/flagger/main.go index 7b7dd2e3..2fd09069 100644 --- a/cmd/flagger/main.go +++ b/cmd/flagger/main.go @@ -31,6 +31,7 @@ var ( slackURL string slackUser string slackChannel string + threadiness int ) func init() { @@ -43,6 +44,7 @@ func init() { flag.StringVar(&slackURL, "slack-url", "", "Slack hook URL.") flag.StringVar(&slackUser, "slack-user", "flagger", "Slack user name.") flag.StringVar(&slackChannel, "slack-channel", "", "Slack channel.") + flag.IntVar(&threadiness, "threadiness", 2, "Worker concurrency.") } func main() { @@ -52,6 +54,7 @@ func main() { if err != nil { log.Fatalf("Error creating logger: %v", err) } + logging.ReplaceGlobalIf(logger.Desugar()) defer logger.Sync() stopCh := signals.SetupSignalHandler() @@ -132,7 +135,7 @@ func main() { // start controller go func(ctrl *controller.Controller) { - if err := ctrl.Run(2, stopCh); err != nil { + if err := ctrl.Run(threadiness, stopCh); err != nil { logger.Fatalf("Error running controller: %v", err) } }(c) diff --git a/pkg/logging/logger.go b/pkg/logging/logger.go index 279fbd7a..14465520 100644 --- a/pkg/logging/logger.go +++ b/pkg/logging/logger.go @@ -1,6 +1,7 @@ package logging import ( + "flag" "fmt" "os" @@ -8,6 +9,17 @@ import ( "go.uber.org/zap/zapcore" ) +var ( + replaceGlobals bool + encoding string +) + +func init() { + flag.BoolVar(&replaceGlobals, "zap-replace-globals", false, "Whether to change level of global zap logger.") + flag.StringVar(&encoding, "zap-encoding", "json", "Zap logger encoding.") + +} + // NewLogger returns a zap sugared logger configured with json format and caller id func NewLogger(logLevel string) (*zap.SugaredLogger, error) { level := zap.NewAtomicLevelAt(zapcore.InfoLevel) @@ -47,7 +59,7 @@ func NewLogger(logLevel string) (*zap.SugaredLogger, error) { Initial: 100, Thereafter: 100, }, - Encoding: "json", + Encoding: encoding, EncoderConfig: zapEncoderConfig, OutputPaths: []string{"stderr"}, ErrorOutputPaths: []string{"stderr"}, @@ -60,6 +72,12 @@ func NewLogger(logLevel string) (*zap.SugaredLogger, error) { return logger.Sugar(), nil } +func ReplaceGlobalIf(logger *zap.Logger) { + if replaceGlobals { + zap.ReplaceGlobals(logger) + } +} + // Console writes to stdout if the console env var exists func Console(a ...interface{}) (n int, err error) { if os.Getenv("console") != "" {