From 6b3c57b0af73ae4e13a54c86b41810900952e2ef Mon Sep 17 00:00:00 2001 From: Maxence Charriere Date: Sat, 26 May 2018 03:02:14 -0700 Subject: [PATCH] Default logger per driver --- app_test.go | 4 ++-- drivers/mac/driver.go | 6 ++++++ drivers/web/client.go | 7 +++++++ drivers/web/server.go | 7 +++++++ examples/test/bin/test-mac/main.go | 5 ----- examples/test/bin/test-web/main.go | 6 ------ log.go | 20 ++++++++++++-------- log_test.go | 6 +++--- 8 files changed, 37 insertions(+), 24 deletions(-) diff --git a/app_test.go b/app_test.go index 12cb4b4dd..b3c693542 100644 --- a/app_test.go +++ b/app_test.go @@ -26,7 +26,7 @@ func TestApp(t *testing.T) { var newPage func(c app.PageConfig) (app.Page, error) output := &bytes.Buffer{} - app.Loggers = []app.Logger{app.NewLogger(output, output, true)} + app.Loggers = []app.Logger{app.NewLogger(output, output, true, true)} app.Import(&tests.Foo{}) app.Import(&tests.Bar{}) @@ -186,7 +186,7 @@ func TestAppError(t *testing.T) { var d app.Driver output := &bytes.Buffer{} - app.Loggers = []app.Logger{app.NewLogger(output, output, true)} + app.Loggers = []app.Logger{app.NewLogger(output, output, true, true)} ctx, cancel := context.WithCancel(context.Background()) diff --git a/drivers/mac/driver.go b/drivers/mac/driver.go index 84ec502d8..48d180e35 100644 --- a/drivers/mac/driver.go +++ b/drivers/mac/driver.go @@ -29,6 +29,12 @@ var ( driver *Driver ) +func init() { + app.Loggers = []app.Logger{ + app.NewLogger(os.Stdout, os.Stderr, true, true), + } +} + // Driver is the app.Driver implementation for MacOS. type Driver struct { app.BaseDriver diff --git a/drivers/web/client.go b/drivers/web/client.go index 1da2ecbb7..1192e9b8d 100644 --- a/drivers/web/client.go +++ b/drivers/web/client.go @@ -5,6 +5,7 @@ package web import ( "context" + "os" "path" "github.com/gopherjs/gopherjs/js" @@ -15,6 +16,12 @@ var ( driver *Driver ) +func init() { + app.Loggers = []app.Logger{ + app.NewLogger(os.Stdout, os.Stderr, true, false), + } +} + // Run satisfies the app.Driver interface. func (d *Driver) Run(f app.Factory) error { d.factory = f diff --git a/drivers/web/server.go b/drivers/web/server.go index a9383daad..7efd217bd 100644 --- a/drivers/web/server.go +++ b/drivers/web/server.go @@ -7,6 +7,7 @@ import ( "context" "html/template" "net/http" + "os" "path" "github.com/murlokswarm/app/appjs" @@ -15,6 +16,12 @@ import ( "github.com/murlokswarm/app/html" ) +func init() { + app.Loggers = []app.Logger{ + app.NewLogger(os.Stdout, os.Stderr, true, true), + } +} + // Run satisfies the app.Driver interface. func (d *Driver) Run(f app.Factory) error { d.factory = f diff --git a/examples/test/bin/test-mac/main.go b/examples/test/bin/test-mac/main.go index 7964cd620..7d759bddc 100644 --- a/examples/test/bin/test-mac/main.go +++ b/examples/test/bin/test-mac/main.go @@ -4,7 +4,6 @@ package main import ( "fmt" - "os" "github.com/murlokswarm/app" "github.com/murlokswarm/app/drivers/mac" @@ -12,10 +11,6 @@ import ( ) func main() { - app.Loggers = []app.Logger{ - app.NewLogger(os.Stdout, os.Stderr, true), - } - app.Import(&test.Webview{}) app.Import(&test.Menu{}) diff --git a/examples/test/bin/test-web/main.go b/examples/test/bin/test-web/main.go index 4a2e5e188..6e1b6fe01 100644 --- a/examples/test/bin/test-web/main.go +++ b/examples/test/bin/test-web/main.go @@ -1,18 +1,12 @@ package main import ( - "os" - "github.com/murlokswarm/app" "github.com/murlokswarm/app/drivers/web" "github.com/murlokswarm/app/examples/test" ) func main() { - app.Loggers = []app.Logger{ - app.NewLogger(os.Stdout, os.Stderr, true), - } - app.Import(&test.Webview{}) app.Import(&test.Menu{}) diff --git a/log.go b/log.go index 525835209..083a54991 100644 --- a/log.go +++ b/log.go @@ -3,7 +3,6 @@ package app import ( "fmt" "io" - "os" "time" ) @@ -22,9 +21,7 @@ type Logger interface { var ( // Loggers is the loggers used by the app. - Loggers = []Logger{ - NewLogger(os.Stdout, os.Stderr, false), - } + Loggers []Logger ) // Log logs a message according to a format specifier. @@ -56,7 +53,7 @@ func WhenDebug(f func()) { // NewLogger creates a logger that writes on the given writers. // Logs that contain errors are logged on werr. -func NewLogger(wout, werr io.Writer, debug bool) Logger { +func NewLogger(wout, werr io.Writer, debug, colors bool) Logger { whenDebug := func(f func()) {} if debug { @@ -69,6 +66,7 @@ func NewLogger(wout, werr io.Writer, debug bool) Logger { wout: wout, werr: wout, whenDebug: whenDebug, + colors: colors, } } @@ -76,7 +74,7 @@ type logger struct { wout io.Writer werr io.Writer whenDebug func(func()) - indent string + colors bool } func (l *logger) Log(format string, v ...interface{}) { @@ -114,6 +112,7 @@ func (l *logger) print(level int, format string, v ...interface{}) { func (l *logger) prefix(level int) string { logLevel := "INFO " color := infoColor + endColor := defaultColor switch level { case levelError: @@ -125,13 +124,18 @@ func (l *logger) prefix(level int) string { color = debugColor } + if !l.colors { + color = "" + endColor = "" + } + return fmt.Sprintf("%s%s%s %s %s|>%s ", color, logLevel, - defaultColor, + endColor, time.Now().Format("2006/01/02 15:04:05"), color, - defaultColor, + endColor, ) } diff --git a/log_test.go b/log_test.go index dea14ad10..a2ead27f2 100644 --- a/log_test.go +++ b/log_test.go @@ -11,7 +11,7 @@ import ( func TestLogs(t *testing.T) { buff := &bytes.Buffer{} Loggers = []Logger{ - NewLogger(buff, buff, true), + NewLogger(buff, buff, true, true), } Log("hello world") @@ -24,7 +24,7 @@ func TestLogs(t *testing.T) { func TestLogger(t *testing.T) { buffer := &bytes.Buffer{} - logger := NewLogger(buffer, buffer, true) + logger := NewLogger(buffer, buffer, true, false) logger.Log("a message") logger.Log("a message with args: %v", 42) @@ -38,7 +38,7 @@ func TestLogger(t *testing.T) { }) assert.Contains(t, buffer.String(), "yoda is strong") - logger = NewLogger(buffer, buffer, false) + logger = NewLogger(buffer, buffer, false, true) logger.WhenDebug(func() { logger.Debug("vader is strong") })