From d113ebe147e33552e4ace9d9f1bcf366ac291b7a Mon Sep 17 00:00:00 2001 From: Travis Turner Date: Thu, 22 Mar 2018 15:34:15 -0500 Subject: [PATCH] Support --verbose logging --- config.go | 2 ++ ctl/server.go | 1 + gossip/gossip.go | 3 +++ logger.go | 24 ++++++++++++++++++++---- server/server.go | 6 +++++- 5 files changed, 31 insertions(+), 5 deletions(-) diff --git a/config.go b/config.go index f2dd41793..84f199dc3 100644 --- a/config.go +++ b/config.go @@ -133,6 +133,7 @@ type Config struct { MaxWritesPerRequest int `toml:"max-writes-per-request"` LogPath string `toml:"log-path"` + Verbose bool `toml:"verbose"` // TLS TLS TLSConfig @@ -178,6 +179,7 @@ func NewConfig() *Config { Bind: ":" + DefaultPort, MaxWritesPerRequest: DefaultMaxWritesPerRequest, // LogPath: "", + // Verbose: false, TLS: TLSConfig{}, } diff --git a/ctl/server.go b/ctl/server.go index 87d6a8e15..d21b8e889 100644 --- a/ctl/server.go +++ b/ctl/server.go @@ -28,6 +28,7 @@ func BuildServerFlags(cmd *cobra.Command, srv *server.Command) { flags.StringVarP(&srv.Config.Bind, "bind", "b", srv.Config.Bind, "Default URI on which pilosa should listen.") flags.IntVarP(&srv.Config.MaxWritesPerRequest, "max-writes-per-request", "", srv.Config.MaxWritesPerRequest, "Number of write commands per request.") flags.StringVar(&srv.Config.LogPath, "log-path", srv.Config.LogPath, "Log path") + flags.BoolVar(&srv.Config.Verbose, "verbose", srv.Config.Verbose, "Verbose logging") // TLS SetTLSConfig(flags, &srv.Config.TLS.CertificatePath, &srv.Config.TLS.CertificateKeyPath, &srv.Config.TLS.SkipVerify) diff --git a/gossip/gossip.go b/gossip/gossip.go index 4a1e0f5f1..a27da24c8 100644 --- a/gossip/gossip.go +++ b/gossip/gossip.go @@ -147,8 +147,10 @@ type gossipConfig struct { memberlistConfig *memberlist.Config } +// GossipMemberSetOption describes a functional option for GossipMemberSet. type GossipMemberSetOption func(*GossipMemberSet) error +// WithTransport is a functional option for providing a transport to NewGossipMemberSet. func WithTransport(transport *Transport) func(*GossipMemberSet) error { return func(g *GossipMemberSet) error { g.transport = transport @@ -156,6 +158,7 @@ func WithTransport(transport *Transport) func(*GossipMemberSet) error { } } +// WithLogger is a functional option for providing a logger to NewGossipMemberSet. func WithLogger(logger *log.Logger) func(*GossipMemberSet) error { return func(g *GossipMemberSet) error { g.logger = logger diff --git a/logger.go b/logger.go index bf516d187..ab26b0883 100644 --- a/logger.go +++ b/logger.go @@ -58,12 +58,28 @@ func NewStandardLogger(logger *log.Logger) *StandardLogger { } } -// Printf is a no-op implementation of the Logger Printf method. func (s *StandardLogger) Printf(format string, v ...interface{}) { s.logger.Printf(format, v...) } -// Debugf is a no-op implementation of the Logger Debugf method. -func (s *StandardLogger) Debugf(format string, v ...interface{}) { - // TODO: implement this +func (s *StandardLogger) Debugf(format string, v ...interface{}) {} + +// VerboseLogger is an implementation of pilosa.Logger which includes debug messages. +type VerboseLogger struct { + logger *log.Logger +} + +func NewVerboseLogger(logger *log.Logger) *VerboseLogger { + return &VerboseLogger{ + logger: logger, + } +} + +func (vb *VerboseLogger) Printf(format string, v ...interface{}) { + vb.logger.Printf(format, v...) +} + +func (vb *VerboseLogger) Debugf(format string, v ...interface{}) { + vb.logger.Printf("VERBOSE...") + vb.logger.Printf(format, v...) } diff --git a/server/server.go b/server/server.go index d45be21e2..8fe508fbd 100644 --- a/server/server.go +++ b/server/server.go @@ -136,7 +136,11 @@ func (m *Command) SetupServer() error { } m.Server.LogOutput = lw m.logger = log.New(lw, "", log.LstdFlags) - m.Server.Logger = pilosa.NewStandardLogger(m.logger) + if m.Config.Verbose { + m.Server.Logger = pilosa.NewVerboseLogger(m.logger) + } else { + m.Server.Logger = pilosa.NewStandardLogger(m.logger) + } m.Server.Handler.Logger = m.Server.Logger m.Server.Holder.Logger = m.Server.Logger m.Server.Holder.Stats.SetLogger(m.Server.Logger)