Bläddra i källkod

Merge pull request #6799 from gyuho/log-output

etcdmain: configurable 'etcd' binary log-output
Gyu-Ho Lee 9 år sedan
förälder
incheckning
27459425fa
3 ändrade filer med 17 tillägg och 0 borttagningar
  1. 2 0
      etcdmain/config.go
  2. 13 0
      etcdmain/etcd.go
  3. 2 0
      etcdmain/help.go

+ 2 - 0
etcdmain/config.go

@@ -75,6 +75,7 @@ type config struct {
 	configFile   string
 	configFile   string
 	printVersion bool
 	printVersion bool
 	ignored      []string
 	ignored      []string
+	logOutput    string
 }
 }
 
 
 // configFlags has the set of flags used for command line parsing a Config
 // configFlags has the set of flags used for command line parsing a Config
@@ -184,6 +185,7 @@ func newConfig() *config {
 	// logging
 	// logging
 	fs.BoolVar(&cfg.Debug, "debug", false, "Enable debug-level logging for etcd.")
 	fs.BoolVar(&cfg.Debug, "debug", false, "Enable debug-level logging for etcd.")
 	fs.StringVar(&cfg.LogPkgLevels, "log-package-levels", "", "Specify a particular log level for each etcd package (eg: 'etcdmain=CRITICAL,etcdserver=DEBUG').")
 	fs.StringVar(&cfg.LogPkgLevels, "log-package-levels", "", "Specify a particular log level for each etcd package (eg: 'etcdmain=CRITICAL,etcdserver=DEBUG').")
+	fs.StringVar(&cfg.logOutput, "log-output", "default", "Specify 'stdout' or 'stderr' to skip journald logging even when running under systemd.")
 
 
 	// unsafe
 	// unsafe
 	fs.BoolVar(&cfg.ForceNewCluster, "force-new-cluster", false, "Force to create a new one member cluster.")
 	fs.BoolVar(&cfg.ForceNewCluster, "force-new-cluster", false, "Force to create a new one member cluster.")

+ 13 - 0
etcdmain/etcd.go

@@ -392,6 +392,19 @@ func setupLogging(cfg *config) {
 		}
 		}
 		repoLog.SetLogLevel(settings)
 		repoLog.SetLogLevel(settings)
 	}
 	}
+
+	// capnslog initially SetFormatter(NewDefaultFormatter(os.Stderr))
+	// where NewDefaultFormatter returns NewJournaldFormatter when syscall.Getppid() == 1
+	// specify 'stdout' or 'stderr' to skip journald logging even when running under systemd
+	switch cfg.logOutput {
+	case "stdout":
+		capnslog.SetFormatter(capnslog.NewPrettyFormatter(os.Stdout, cfg.Debug))
+	case "stderr":
+		capnslog.SetFormatter(capnslog.NewPrettyFormatter(os.Stderr, cfg.Debug))
+	case "default":
+	default:
+		plog.Panicf(`unknown log-output %q (only supports "default", "stdout", "stderr")`, cfg.logOutput)
+	}
 }
 }
 
 
 func checkSupportArch() {
 func checkSupportArch() {

+ 2 - 0
etcdmain/help.go

@@ -139,6 +139,8 @@ logging flags
 		enable debug-level logging for etcd.
 		enable debug-level logging for etcd.
 	--log-package-levels ''
 	--log-package-levels ''
 		specify a particular log level for each etcd package (eg: 'etcdmain=CRITICAL,etcdserver=DEBUG').
 		specify a particular log level for each etcd package (eg: 'etcdmain=CRITICAL,etcdserver=DEBUG').
+	--log-output 'default'
+		specify 'stdout' or 'stderr' to skip journald logging even when running under systemd.
 
 
 unsafe flags:
 unsafe flags: