From 0bffb47526cbe3fe46b0a3a797fcc9048be72396 Mon Sep 17 00:00:00 2001 From: Orpheus Lummis Date: Tue, 2 Aug 2022 13:43:39 -0400 Subject: [PATCH] fix: Support multiple `--logger` flags (#704) --- cli/cli.go | 14 +++++++------- cli/root.go | 6 +++--- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/cli/cli.go b/cli/cli.go index f90eee81f1..e67a6e5e45 100644 --- a/cli/cli.go +++ b/cli/cli.go @@ -97,17 +97,18 @@ func parseAndConfigLog(ctx context.Context, cfg *config.LoggingConfig, cmd *cobr return err } - // handle --logger ,=,... - loggerKVs, err := cmd.Flags().GetString("logger") + // handle --logger ,=,... --logger ,=,.. + loggerKVs, err := cmd.Flags().GetStringArray("logger") if err != nil { return fmt.Errorf("can't get logger flag: %w", err) } - if loggerKVs != "" { - if err := parseAndConfigLogAllParams(ctx, cfg, loggerKVs); err != nil { + for _, kvs := range loggerKVs { + if err := parseAndConfigLogAllParams(ctx, cfg, kvs); err != nil { return err } } + loggingConfig, err := cfg.ToLoggerConfig() if err != nil { return fmt.Errorf("could not get logging config: %w", err) @@ -119,13 +120,12 @@ func parseAndConfigLog(ctx context.Context, cfg *config.LoggingConfig, cmd *cobr func parseAndConfigLogAllParams(ctx context.Context, cfg *config.LoggingConfig, kvs string) error { if kvs == "" { - return nil //nothing todo + return nil } - // check if a CSV is provided parsed := strings.Split(kvs, ",") if len(parsed) <= 1 { - log.Fatal(ctx, "invalid --logger format, must be a csv") + return fmt.Errorf("logger was not provided as comma-separated pairs of =: %s", kvs) } name := parsed[0] diff --git a/cli/root.go b/cli/root.go index 3d93f35175..4b04844589 100644 --- a/cli/root.go +++ b/cli/root.go @@ -85,9 +85,9 @@ func init() { log.FatalE(context.Background(), "Could not bind logging.loglevel", err) } - rootCmd.PersistentFlags().String( - "logger", "", - "Named logger parameter override. usage: --logger ,level=,output=,...", + rootCmd.PersistentFlags().StringArray( + "logger", []string{}, + "Override logger parameters. Usage: --logger ,level=,output=,...", ) rootCmd.PersistentFlags().String(