From 5b432ea643de29f2bedadcf323bda970a66b640e Mon Sep 17 00:00:00 2001 From: runner Date: Wed, 6 Dec 2017 13:04:22 +0800 Subject: [PATCH 1/2] fix color is disabled on the windows fix color is disabled on the windows --- logger/handlers.go | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/logger/handlers.go b/logger/handlers.go index 8aceee66d..4f58adfd3 100644 --- a/logger/handlers.go +++ b/logger/handlers.go @@ -285,12 +285,29 @@ func (h *CompositeMultiHandler) SetJsonFile(filePath string, options *LogOptions } h.SetJson(writer, options) } + func (h *CompositeMultiHandler) SetTerminal(writer io.Writer, options *LogOptions) { - handler := CallerFileHandler(StreamHandler( + streamHandler := StreamHandler( writer, TerminalFormatHandler( options.GetBoolDefault("noColor", false), - options.GetBoolDefault("smallDate", true)))) + options.GetBoolDefault("smallDate", true))) + + if os.Stdout == writer { + streamHandler = StreamHandler( + colorable.NewColorableStdout(), + TerminalFormatHandler( + options.GetBoolDefault("noColor", false), + options.GetBoolDefault("smallDate", true))) + } else if os.Stderr == writer { + streamHandler = StreamHandler( + colorable.NewColorableStderr(), + TerminalFormatHandler( + options.GetBoolDefault("noColor", false), + options.GetBoolDefault("smallDate", true))) + } + + handler := CallerFileHandler(streamHandler) if options.HandlerWrap != nil { handler = options.HandlerWrap.SetChild(handler) } From 3cfb6223b1684aaa141afb9a243fce674434deaf Mon Sep 17 00:00:00 2001 From: runner Date: Wed, 6 Dec 2017 13:14:08 +0800 Subject: [PATCH 2/2] fix import errors --- logger/handlers.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/logger/handlers.go b/logger/handlers.go index 4f58adfd3..e60a626db 100644 --- a/logger/handlers.go +++ b/logger/handlers.go @@ -1,9 +1,12 @@ package logger import ( + "io" + "os" + + colorable "github.com/mattn/go-colorable" "github.com/revel/log15" "gopkg.in/natefinch/lumberjack.v2" - "io" ) // Filters out records which do not match the level