From 231a32331bee57705627520a6f11188b658b53cd Mon Sep 17 00:00:00 2001 From: Alex Wong Date: Tue, 5 Mar 2019 17:48:55 +0800 Subject: [PATCH] move flags to main packages --- cmd/flagger/main.go | 12 ++++++++++-- cmd/loadtester/main.go | 19 ++++++++++++++----- pkg/logging/logger.go | 25 ++++++------------------- 3 files changed, 30 insertions(+), 26 deletions(-) diff --git a/cmd/flagger/main.go b/cmd/flagger/main.go index 2fd09069..127e67b5 100644 --- a/cmd/flagger/main.go +++ b/cmd/flagger/main.go @@ -2,6 +2,7 @@ package main import ( "flag" + "go.uber.org/zap" "log" "time" @@ -32,6 +33,8 @@ var ( slackUser string slackChannel string threadiness int + zapReplaceGlobals bool + zapEncoding string ) func init() { @@ -45,16 +48,21 @@ func init() { flag.StringVar(&slackUser, "slack-user", "flagger", "Slack user name.") flag.StringVar(&slackChannel, "slack-channel", "", "Slack channel.") flag.IntVar(&threadiness, "threadiness", 2, "Worker concurrency.") + flag.BoolVar(&zapReplaceGlobals, "zap-replace-globals", false, "Whether to change the logging level of the global zap logger.") + flag.StringVar(&zapEncoding, "zap-encoding", "json", "Zap logger encoding.") } func main() { flag.Parse() - logger, err := logging.NewLogger(logLevel) + logger, err := logging.NewLoggerWithEncoding(logLevel, zapEncoding) if err != nil { log.Fatalf("Error creating logger: %v", err) } - logging.ReplaceGlobalIf(logger.Desugar()) + if zapReplaceGlobals { + zap.ReplaceGlobals(logger.Desugar()) + } + defer logger.Sync() stopCh := signals.SetupSignalHandler() diff --git a/cmd/loadtester/main.go b/cmd/loadtester/main.go index d7ec0feb..9b84d2da 100644 --- a/cmd/loadtester/main.go +++ b/cmd/loadtester/main.go @@ -5,16 +5,19 @@ import ( "github.com/knative/pkg/signals" "github.com/stefanprodan/flagger/pkg/loadtester" "github.com/stefanprodan/flagger/pkg/logging" + "go.uber.org/zap" "log" "time" ) var VERSION = "0.1.0" var ( - logLevel string - port string - timeout time.Duration - logCmdOutput bool + logLevel string + port string + timeout time.Duration + logCmdOutput bool + zapReplaceGlobals bool + zapEncoding string ) func init() { @@ -22,15 +25,21 @@ func init() { flag.StringVar(&port, "port", "9090", "Port to listen on.") flag.DurationVar(&timeout, "timeout", time.Hour, "Command exec timeout.") flag.BoolVar(&logCmdOutput, "log-cmd-output", true, "Log command output to stderr") + flag.BoolVar(&zapReplaceGlobals, "zap-replace-globals", false, "Whether to change the logging level of the global zap logger.") + flag.StringVar(&zapEncoding, "zap-encoding", "json", "Zap logger encoding.") } func main() { flag.Parse() - logger, err := logging.NewLogger(logLevel) + logger, err := logging.NewLoggerWithEncoding(logLevel, zapEncoding) if err != nil { log.Fatalf("Error creating logger: %v", err) } + if zapReplaceGlobals { + zap.ReplaceGlobals(logger.Desugar()) + } + defer logger.Sync() stopCh := signals.SetupSignalHandler() diff --git a/pkg/logging/logger.go b/pkg/logging/logger.go index 14465520..8c1838e5 100644 --- a/pkg/logging/logger.go +++ b/pkg/logging/logger.go @@ -1,7 +1,6 @@ package logging import ( - "flag" "fmt" "os" @@ -9,19 +8,13 @@ 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) { + return NewLoggerWithEncoding(logLevel, "json") +} + +// NewLoggerWithEncoding returns a zap sugared logger configured with provided format, e.g. console or json, and caller id +func NewLoggerWithEncoding(logLevel, zapEncoding string) (*zap.SugaredLogger, error) { level := zap.NewAtomicLevelAt(zapcore.InfoLevel) switch logLevel { case "debug": @@ -59,7 +52,7 @@ func NewLogger(logLevel string) (*zap.SugaredLogger, error) { Initial: 100, Thereafter: 100, }, - Encoding: encoding, + Encoding: zapEncoding, EncoderConfig: zapEncoderConfig, OutputPaths: []string{"stderr"}, ErrorOutputPaths: []string{"stderr"}, @@ -72,12 +65,6 @@ 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") != "" {