embed: move SetupLogging, LogOutput from etcdmain
Signed-off-by: Gyu-Ho Lee <gyuhox@gmail.com>release-3.3
parent
f8bec0f631
commit
4b1e09f2b4
|
@ -15,11 +15,13 @@
|
||||||
package embed
|
package embed
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"crypto/tls"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"net"
|
"net"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
@ -31,6 +33,7 @@ import (
|
||||||
"github.com/coreos/etcd/pkg/transport"
|
"github.com/coreos/etcd/pkg/transport"
|
||||||
"github.com/coreos/etcd/pkg/types"
|
"github.com/coreos/etcd/pkg/types"
|
||||||
|
|
||||||
|
"github.com/coreos/pkg/capnslog"
|
||||||
"github.com/ghodss/yaml"
|
"github.com/ghodss/yaml"
|
||||||
"google.golang.org/grpc"
|
"google.golang.org/grpc"
|
||||||
)
|
)
|
||||||
|
@ -136,6 +139,7 @@ type Config struct {
|
||||||
|
|
||||||
Debug bool `json:"debug"`
|
Debug bool `json:"debug"`
|
||||||
LogPkgLevels string `json:"log-package-levels"`
|
LogPkgLevels string `json:"log-package-levels"`
|
||||||
|
LogOutput string `json:"log-output"`
|
||||||
EnablePprof bool `json:"enable-pprof"`
|
EnablePprof bool `json:"enable-pprof"`
|
||||||
Metrics string `json:"metrics"`
|
Metrics string `json:"metrics"`
|
||||||
ListenMetricsUrls []url.URL
|
ListenMetricsUrls []url.URL
|
||||||
|
@ -228,6 +232,43 @@ func NewConfig() *Config {
|
||||||
return cfg
|
return cfg
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetupLogging initializes etcd logging.
|
||||||
|
// Must be called after flag parsing.
|
||||||
|
func (cfg *Config) SetupLogging() {
|
||||||
|
cfg.ClientTLSInfo.HandshakeFailure = func(conn *tls.Conn, err error) {
|
||||||
|
plog.Infof("rejected connection from %q (%v)", conn.RemoteAddr().String(), err)
|
||||||
|
}
|
||||||
|
cfg.PeerTLSInfo.HandshakeFailure = cfg.ClientTLSInfo.HandshakeFailure
|
||||||
|
|
||||||
|
capnslog.SetGlobalLogLevel(capnslog.INFO)
|
||||||
|
if cfg.Debug {
|
||||||
|
capnslog.SetGlobalLogLevel(capnslog.DEBUG)
|
||||||
|
grpc.EnableTracing = true
|
||||||
|
}
|
||||||
|
if cfg.LogPkgLevels != "" {
|
||||||
|
repoLog := capnslog.MustRepoLogger("github.com/coreos/etcd")
|
||||||
|
settings, err := repoLog.ParseLogLevelConfig(cfg.LogPkgLevels)
|
||||||
|
if err != nil {
|
||||||
|
plog.Warningf("couldn't parse log level string: %s, continuing with default levels", err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
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 ConfigFromFile(path string) (*Config, error) {
|
func ConfigFromFile(path string) (*Config, error) {
|
||||||
cfg := &configYAML{Config: *NewConfig()}
|
cfg := &configYAML{Config: *NewConfig()}
|
||||||
if err := cfg.configFromFile(path); err != nil {
|
if err := cfg.configFromFile(path); err != nil {
|
||||||
|
|
|
@ -137,5 +137,8 @@ debug: false
|
||||||
# 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-package-levels:
|
log-package-levels:
|
||||||
|
|
||||||
|
# Specify 'stdout' or 'stderr' to skip journald logging even when running under systemd.
|
||||||
|
log-output: default
|
||||||
|
|
||||||
# Force to create a new one member cluster.
|
# Force to create a new one member cluster.
|
||||||
force-new-cluster: false
|
force-new-cluster: false
|
||||||
|
|
Loading…
Reference in New Issue