change NewStandardLogger() to only take an io.Writer

This commit is contained in:
Travis Turner 2018-03-27 10:23:08 -05:00
parent 36ce12da59
commit 5c52e48b12
No known key found for this signature in database
GPG key ID: 7F08008DFD9314C9
3 changed files with 22 additions and 68 deletions

View file

@ -17,7 +17,6 @@ package pilosa
import (
"io"
"log"
"os"
)
// Ensure nopLogger implements interface.
@ -27,7 +26,6 @@ var _ Logger = &nopLogger{}
type Logger interface {
Printf(format string, v ...interface{})
Debugf(format string, v ...interface{})
Close() error
}
func init() {
@ -45,34 +43,15 @@ func (n *nopLogger) Printf(format string, v ...interface{}) {}
// Debugf is a no-op implementation of the Logger Debugf method.
func (n *nopLogger) Debugf(format string, v ...interface{}) {}
// Close is a no-op implementation of the Logger Close method.
func (n *nopLogger) Close() error { return nil }
// StandardLogger is a basic implementation of pilosa.Logger based on log.Logger.
type StandardLogger struct {
logger *log.Logger
f *os.File
}
func NewStandardLogger(path string, defaultWriter io.Writer) (*StandardLogger, error) {
var lw io.Writer
var err error
var f *os.File
if path == "" {
lw = defaultWriter
} else {
f, err = os.OpenFile(path, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0600)
if err != nil {
return nil, err
}
lw = f
}
func NewStandardLogger(w io.Writer) *StandardLogger {
return &StandardLogger{
logger: log.New(lw, "", log.LstdFlags),
f: f,
}, nil
logger: log.New(w, "", log.LstdFlags),
}
}
func (s *StandardLogger) Printf(format string, v ...interface{}) {
@ -81,13 +60,6 @@ func (s *StandardLogger) Printf(format string, v ...interface{}) {
func (s *StandardLogger) Debugf(format string, v ...interface{}) {}
func (s *StandardLogger) Close() error {
if s.f == nil {
return nil
}
return s.f.Close()
}
func (s *StandardLogger) Logger() *log.Logger {
return s.logger
}
@ -95,28 +67,12 @@ func (s *StandardLogger) Logger() *log.Logger {
// VerboseLogger is an implementation of pilosa.Logger which includes debug messages.
type VerboseLogger struct {
logger *log.Logger
f *os.File
}
func NewVerboseLogger(path string, defaultWriter io.Writer) (*VerboseLogger, error) {
var lw io.Writer
var err error
var f *os.File
if path == "" {
lw = defaultWriter
} else {
f, err = os.OpenFile(path, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0600)
if err != nil {
return nil, err
}
lw = f
}
func NewVerboseLogger(w io.Writer) *VerboseLogger {
return &VerboseLogger{
logger: log.New(lw, "", log.LstdFlags),
f: f,
}, nil
logger: log.New(w, "", log.LstdFlags),
}
}
func (vb *VerboseLogger) Printf(format string, v ...interface{}) {
@ -127,13 +83,6 @@ func (vb *VerboseLogger) Debugf(format string, v ...interface{}) {
vb.logger.Printf(format, v...)
}
func (vb *VerboseLogger) Close() error {
if vb.f == nil {
return nil
}
return vb.f.Close()
}
func (vb *VerboseLogger) Logger() *log.Logger {
return vb.logger
}

View file

@ -74,7 +74,8 @@ type Command struct {
Done chan struct{}
// Passed to the Gossip implementation.
logger *log.Logger
logOutput io.Writer
logger *log.Logger
}
// NewCommand returns a new instance of Main.
@ -125,18 +126,22 @@ func (m *Command) Run(args ...string) (err error) {
// SetupLogger sets up the logger based on the configuration.
func (m *Command) SetupLogger() error {
if m.Config.Verbose {
vbl, err := pilosa.NewVerboseLogger(m.Config.LogPath, m.Stderr)
var err error
if m.Config.LogPath == "" {
m.logOutput = m.Stderr
} else {
m.logOutput, err = os.OpenFile(m.Config.LogPath, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0600)
if err != nil {
return err
}
}
if m.Config.Verbose {
vbl := pilosa.NewVerboseLogger(m.logOutput)
m.logger = vbl.Logger()
m.Server.Logger = vbl
} else {
sl, err := pilosa.NewStandardLogger(m.Config.LogPath, m.Stderr)
if err != nil {
return err
}
sl := pilosa.NewStandardLogger(m.logOutput)
m.logger = sl.Logger()
m.Server.Logger = sl
}
@ -292,9 +297,11 @@ func (m *Command) SetupNetworking() error {
// Close shuts down the server.
func (m *Command) Close() error {
var logErr error
serveErr := m.Server.Close()
logErr := m.Server.Logger.Close()
if closer, ok := m.logOutput.(io.Closer); ok {
logErr = closer.Close()
}
close(m.Done)
if serveErr != nil && logErr != nil {
return fmt.Errorf("closing server: '%v', closing logs: '%v'", serveErr, logErr)

View file

@ -43,8 +43,6 @@ func (b *BufferLogger) Printf(format string, v ...interface{}) {
func (b *BufferLogger) Debugf(format string, v ...interface{}) {}
func (b *BufferLogger) Close() error { return nil }
func (b *BufferLogger) ReadAll() ([]byte, error) {
return ioutil.ReadAll(b.buf)
}