From 7772aa912e8c619e4d9be147c988e3a39362ae31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Ga=C5=82kowski?= Date: Thu, 1 Oct 2020 22:58:34 +0200 Subject: [PATCH] fix #2505, quick more naive version --- logger.go | 8 ++++---- logger_test.go | 18 +++++++++--------- recovery.go | 9 ++++++++- 3 files changed, 21 insertions(+), 14 deletions(-) diff --git a/logger.go b/logger.go index d361b74d..1adca3d8 100644 --- a/logger.go +++ b/logger.go @@ -33,7 +33,7 @@ const ( reset = "\033[0m" ) -var consoleColorMode = autoColor +var ConsoleColorMode = autoColor // LoggerConfig defines the config for Logger middleware. type LoggerConfig struct { @@ -125,7 +125,7 @@ func (p *LogFormatterParams) ResetColor() string { // IsOutputColor indicates whether can colors be outputted to the log. func (p *LogFormatterParams) IsOutputColor() bool { - return consoleColorMode == forceColor || (consoleColorMode == autoColor && p.isTerm) + return ConsoleColorMode == forceColor || (ConsoleColorMode == autoColor && p.isTerm) } // defaultLogFormatter is the default log format function Logger middleware uses. @@ -154,12 +154,12 @@ var defaultLogFormatter = func(param LogFormatterParams) string { // DisableConsoleColor disables color output in the console. func DisableConsoleColor() { - consoleColorMode = disableColor + ConsoleColorMode = disableColor } // ForceConsoleColor force color output in the console. func ForceConsoleColor() { - consoleColorMode = forceColor + ConsoleColorMode = forceColor } // ErrorLogger returns a handlerfunc for any error type. diff --git a/logger_test.go b/logger_test.go index 0d40666e..5416dc2b 100644 --- a/logger_test.go +++ b/logger_test.go @@ -326,7 +326,7 @@ func TestIsOutputColor(t *testing.T) { isTerm: true, } - consoleColorMode = autoColor + ConsoleColorMode = autoColor assert.Equal(t, true, p.IsOutputColor()) ForceConsoleColor() @@ -340,7 +340,7 @@ func TestIsOutputColor(t *testing.T) { isTerm: false, } - consoleColorMode = autoColor + ConsoleColorMode = autoColor assert.Equal(t, false, p.IsOutputColor()) ForceConsoleColor() @@ -350,7 +350,7 @@ func TestIsOutputColor(t *testing.T) { assert.Equal(t, false, p.IsOutputColor()) // reset console color mode. - consoleColorMode = autoColor + ConsoleColorMode = autoColor } func TestErrorLogger(t *testing.T) { @@ -415,20 +415,20 @@ func TestLoggerWithConfigSkippingPaths(t *testing.T) { func TestDisableConsoleColor(t *testing.T) { New() - assert.Equal(t, autoColor, consoleColorMode) + assert.Equal(t, autoColor, ConsoleColorMode) DisableConsoleColor() - assert.Equal(t, disableColor, consoleColorMode) + assert.Equal(t, disableColor, ConsoleColorMode) // reset console color mode. - consoleColorMode = autoColor + ConsoleColorMode = autoColor } func TestForceConsoleColor(t *testing.T) { New() - assert.Equal(t, autoColor, consoleColorMode) + assert.Equal(t, autoColor, ConsoleColorMode) ForceConsoleColor() - assert.Equal(t, forceColor, consoleColorMode) + assert.Equal(t, forceColor, ConsoleColorMode) // reset console color mode. - consoleColorMode = autoColor + ConsoleColorMode = autoColor } diff --git a/recovery.go b/recovery.go index d02b829b..edb027e7 100644 --- a/recovery.go +++ b/recovery.go @@ -50,8 +50,15 @@ func RecoveryWithWriter(out io.Writer, recovery ...RecoveryFunc) HandlerFunc { // CustomRecoveryWithWriter returns a middleware for a given writer that recovers from any panics and calls the provided handle func to handle it. func CustomRecoveryWithWriter(out io.Writer, handle RecoveryFunc) HandlerFunc { var logger *log.Logger + + // If gin.DisableConsoleColor() is invoked, respect it. + prefix := "\n\n" + if ConsoleColorMode != 1 { + prefix = "\n\n\x1b[31m" + } + if out != nil { - logger = log.New(out, "\n\n\x1b[31m", log.LstdFlags) + logger = log.New(out, prefix, log.LstdFlags) } return func(c *Context) { defer func() {