Support --verbose logging

This commit is contained in:
Travis Turner 2018-03-22 15:34:15 -05:00
parent 9a2aeac6f8
commit d113ebe147
No known key found for this signature in database
GPG key ID: 7F08008DFD9314C9
5 changed files with 31 additions and 5 deletions

View file

@ -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{},
}

View file

@ -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)

View file

@ -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

View file

@ -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...)
}

View file

@ -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)