diff --git a/intlogger.go b/intlogger.go index 0f63466..1a80008 100644 --- a/intlogger.go +++ b/intlogger.go @@ -55,11 +55,25 @@ var ( faintBoldColor = color.New(color.Faint, color.Bold) faintColor = color.New(color.Faint) - faintMultiLinePrefix = faintColor.Sprint(" | ") - faintFieldSeparator = faintColor.Sprint("=") - faintFieldSeparatorWithNewLine = faintColor.Sprint("=\n") + faintMultiLinePrefix string + faintFieldSeparator string + faintFieldSeparatorWithNewLine string ) +func init() { + // Force all the colors to enabled because we do our own detection of color usage. + for _, c := range _levelToColor { + c.EnableColor() + } + + faintBoldColor.EnableColor() + faintColor.EnableColor() + + faintMultiLinePrefix = faintColor.Sprint(" | ") + faintFieldSeparator = faintColor.Sprint("=") + faintFieldSeparatorWithNewLine = faintColor.Sprint("=\n") +} + // Make sure that intLogger is a Logger var _ Logger = &intLogger{} diff --git a/logger_test.go b/logger_test.go index 1d10e3e..1ab9fd5 100644 --- a/logger_test.go +++ b/logger_test.go @@ -257,6 +257,38 @@ func TestLogger(t *testing.T) { assert.Equal(t, "[INFO] sublogger: this is test\n", rest) }) + t.Run("can force colors to on in any context", func(t *testing.T) { + if runtime.GOOS == "windows" { + t.Skip("colors are different on windows") + } + + var buf bytes.Buffer + + logger := New(&LoggerOptions{ + // No name! + Output: &buf, + Level: Trace, + Color: ForceColor, + TimeFormat: "