From 1974785511b00d827c8d928e866606c1eb26f7af Mon Sep 17 00:00:00 2001 From: Gyuho Lee Date: Tue, 17 Apr 2018 11:51:15 -0700 Subject: [PATCH] etcdmain: accept multiple values in "--log-output" Signed-off-by: Gyuho Lee --- etcdmain/config.go | 10 +++++++++- etcdmain/help.go | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/etcdmain/config.go b/etcdmain/config.go index 13cae74e1..c4a6d0a48 100644 --- a/etcdmain/config.go +++ b/etcdmain/config.go @@ -24,6 +24,7 @@ import ( "net/url" "os" "runtime" + "sort" "strings" "github.com/coreos/etcd/embed" @@ -216,7 +217,7 @@ func newConfig() *config { // logging fs.StringVar(&cfg.ec.Logger, "logger", "capnslog", "Specify 'zap' for structured logging or 'capnslog'.") - fs.StringVar(&cfg.ec.LogOutput, "log-output", embed.DefaultLogOutput, "Specify 'stdout' or 'stderr' to skip journald logging even when running under systemd.") + fs.Var(flags.NewUniqueStringsValue(embed.DefaultLogOutput), "log-output", "Specify 'stdout' or 'stderr' to skip journald logging even when running under systemd, or list of comma separated output targets.") fs.BoolVar(&cfg.ec.Debug, "debug", false, "Enable debug-level logging for etcd.") fs.StringVar(&cfg.ec.LogPkgLevels, "log-package-levels", "", "(To be deprecated) Specify a particular log level for each etcd package (eg: 'etcdmain=CRITICAL,etcdserver=DEBUG').") @@ -304,6 +305,13 @@ func (cfg *config) configFromCmdLine() error { cfg.ec.CORS = flags.UniqueURLsMapFromFlag(cfg.cf.flagSet, "cors") cfg.ec.HostWhitelist = flags.UniqueStringsMapFromFlag(cfg.cf.flagSet, "host-whitelist") + outputs := flags.UniqueStringsMapFromFlag(cfg.cf.flagSet, "log-output") + oss := make([]string, 0, len(outputs)) + for v := range outputs { + oss = append(oss, v) + } + sort.Strings(oss) + cfg.ec.LogOutput = oss cfg.ec.ClusterState = cfg.cf.clusterState.String() cfg.cp.Fallback = cfg.cf.fallback.String() diff --git a/etcdmain/help.go b/etcdmain/help.go index a825628d5..72e50043a 100644 --- a/etcdmain/help.go +++ b/etcdmain/help.go @@ -157,7 +157,7 @@ Logging: --logger 'capnslog' Specify 'zap' for structured logging or 'capnslog'. --log-output 'default' - Specify 'stdout' or 'stderr' to skip journald logging even when running under systemd. + Specify 'stdout' or 'stderr' to skip journald logging even when running under systemd, or list of comma separated output targets. --debug 'false' Enable debug-level logging for etcd.