From ff61ee16c2d37a9fd118bfff00e3902dbbc9990e Mon Sep 17 00:00:00 2001 From: Mark Bates Date: Sat, 4 Feb 2017 12:17:10 -0500 Subject: [PATCH] removed the multilogger since it wasn't providing any real benefit --- app.go | 31 ---------------- logger.go | 17 ++++++++- multi_logger.go | 99 ------------------------------------------------- options.go | 10 +---- 4 files changed, 18 insertions(+), 139 deletions(-) delete mode 100644 multi_logger.go diff --git a/app.go b/app.go index a2c6c6951..46a8a8e5b 100644 --- a/app.go +++ b/app.go @@ -1,13 +1,9 @@ package buffalo import ( - "log" "net/http" - "os" - "path/filepath" "sync" - "github.com/Sirupsen/logrus" gcontext "github.com/gorilla/context" "github.com/gorilla/mux" "github.com/markbates/refresh/refresh/web" @@ -61,9 +57,6 @@ func New(opts Options) *App { moot: &sync.Mutex{}, routes: RouteList{}, } - if a.Logger == nil { - a.Logger = NewLogger(opts.LogLevel) - } a.router.NotFoundHandler = http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { c := a.newContext(RouteInfo{}, res, req) err := errors.Errorf("path not found: %s", req.URL.Path) @@ -81,30 +74,6 @@ func New(opts Options) *App { // https://www.youtube.com/watch?v=BKbOplYmjZM func Automatic(opts Options) *App { opts = optionsWithDefaults(opts) - if opts.Logger == nil { - lvl, _ := logrus.ParseLevel(opts.LogLevel) - - hl := logrus.New() - hl.Level = lvl - hl.Formatter = &logrus.TextFormatter{} - - err := os.MkdirAll(opts.LogDir, 0755) - if err != nil { - log.Fatal(err) - } - - f, err := os.Create(filepath.Join(opts.LogDir, opts.Env+".log")) - if err != nil { - log.Fatal(err) - } - fl := logrus.New() - fl.Level = lvl - fl.Formatter = &logrus.JSONFormatter{} - fl.Out = f - - ml := &multiLogger{Loggers: []logrus.FieldLogger{hl, fl}} - opts.Logger = ml - } a := New(opts) diff --git a/logger.go b/logger.go index cd28542c9..a3cbeee66 100644 --- a/logger.go +++ b/logger.go @@ -21,6 +21,20 @@ type Logger interface { Panic(...interface{}) } +var _ Logger = logrusWrapper{} + +type logrusWrapper struct { + logrus.FieldLogger +} + +func (l logrusWrapper) WithField(s string, i interface{}) Logger { + return logrusWrapper{l.FieldLogger.WithField(s, i)} +} + +func (l logrusWrapper) WithFields(m map[string]interface{}) Logger { + return logrusWrapper{l.FieldLogger.WithFields(m)} +} + // NewLogger based on the specified log level. // This logger will log to the STDOUT in a human readable, // but parseable form. @@ -30,5 +44,6 @@ type Logger interface { func NewLogger(level string) Logger { l := logrus.New() l.Level, _ = logrus.ParseLevel(level) - return &multiLogger{Loggers: []logrus.FieldLogger{l}} + l.Formatter = &logrus.TextFormatter{} + return logrusWrapper{l} } diff --git a/multi_logger.go b/multi_logger.go deleted file mode 100644 index 87ad666e0..000000000 --- a/multi_logger.go +++ /dev/null @@ -1,99 +0,0 @@ -package buffalo - -import "github.com/Sirupsen/logrus" - -var ( - _ Logger = &multiLogger{} -) - -type multiLogger struct { - Loggers []logrus.FieldLogger -} - -func (m *multiLogger) WithField(key string, value interface{}) Logger { - lgs := []logrus.FieldLogger{} - for _, l := range m.Loggers { - lgs = append(lgs, l.WithField(key, value)) - } - return &multiLogger{Loggers: lgs} -} - -func (m *multiLogger) WithFields(fields map[string]interface{}) Logger { - lgs := []logrus.FieldLogger{} - for _, l := range m.Loggers { - lgs = append(lgs, l.WithFields(fields)) - } - return &multiLogger{Loggers: lgs} -} - -func (m *multiLogger) Debugf(format string, args ...interface{}) { - for _, l := range m.Loggers { - l.Debugf(format, args...) - } -} - -func (m *multiLogger) Infof(format string, args ...interface{}) { - for _, l := range m.Loggers { - l.Infof(format, args...) - } -} - -func (m *multiLogger) Printf(format string, args ...interface{}) { - for _, l := range m.Loggers { - l.Printf(format, args...) - } -} - -func (m *multiLogger) Warnf(format string, args ...interface{}) { - for _, l := range m.Loggers { - l.Warnf(format, args...) - } -} - -func (m *multiLogger) Errorf(format string, args ...interface{}) { - for _, l := range m.Loggers { - l.Errorf(format, args...) - } -} - -func (m *multiLogger) Fatalf(format string, args ...interface{}) { - for _, l := range m.Loggers { - l.Fatalf(format, args...) - } -} - -func (m *multiLogger) Debug(args ...interface{}) { - for _, l := range m.Loggers { - l.Debug(args...) - } -} - -func (m *multiLogger) Info(args ...interface{}) { - for _, l := range m.Loggers { - l.Info(args...) - } -} - -func (m *multiLogger) Warn(args ...interface{}) { - for _, l := range m.Loggers { - l.Warn(args...) - } -} - -func (m *multiLogger) Error(args ...interface{}) { - for _, l := range m.Loggers { - l.Error(args...) - } -} - -func (m *multiLogger) Fatal(args ...interface{}) { - for _, l := range m.Loggers { - l.Fatal(args...) - } -} - -func (m *multiLogger) Panic(args ...interface{}) { - for _, l := range m.Loggers { - l.Panic(args...) - } -} diff --git a/options.go b/options.go index 20b9e491d..155d9dfea 100644 --- a/options.go +++ b/options.go @@ -4,8 +4,6 @@ import ( "fmt" "log" "net/http" - "os" - "path/filepath" "github.com/gobuffalo/envy" "github.com/gorilla/sessions" @@ -22,7 +20,6 @@ type Options struct { Logger Logger // LogDir is the path to the directory for storing the JSON log files from the // default Logger - LogDir string MethodOverride http.HandlerFunc // SessionStore is the `github.com/gorilla/sessions` store used to back // the session. It defaults to use a cookie store and the ENV variable @@ -45,11 +42,8 @@ func optionsWithDefaults(opts Options) Options { opts.Env = defaults.String(opts.Env, envy.Get("GO_ENV", "development")) opts.LogLevel = defaults.String(opts.LogLevel, "debug") - pwd, _ := os.Getwd() - opts.LogDir = defaults.String(opts.LogDir, filepath.Join(pwd, "logs")) - - if opts.Env == "test" { - opts.LogDir = os.TempDir() + if opts.Logger == nil { + opts.Logger = NewLogger(opts.LogLevel) } if opts.SessionStore == nil {