Skip to content

Commit

Permalink
handle light/dark background terminals better
Browse files Browse the repository at this point in the history
  • Loading branch information
nanzhong committed Aug 16, 2018
1 parent abb3b0e commit 84b0b19
Show file tree
Hide file tree
Showing 3 changed files with 78 additions and 30 deletions.
54 changes: 30 additions & 24 deletions handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,18 +22,21 @@ var DefaultOptions = &HandlerOptions{
TruncateLength: 15,
TimeFormat: time.Stamp,

KeyColor: color.New(color.FgGreen),
ValColor: color.New(color.FgHiWhite),
TimeColor: color.New(color.FgBlack),
MsgColor: color.New(color.FgBlack),
MsgAbsentColor: color.New(color.FgWhite),
DebugLevelColor: color.New(color.FgMagenta),
InfoLevelColor: color.New(color.FgCyan),
WarnLevelColor: color.New(color.FgYellow),
ErrorLevelColor: color.New(color.FgRed),
PanicLevelColor: color.New(color.BgRed),
FatalLevelColor: color.New(color.BgHiRed, color.FgHiWhite),
UnknownLevelColor: color.New(color.FgMagenta),
KeyColor: color.New(color.FgGreen),
ValColor: color.New(color.FgHiWhite),
TimeLightBgColor: color.New(color.FgBlack),
TimeDarkBgColor: color.New(color.FgWhite),
MsgLightBgColor: color.New(color.FgBlack),
MsgAbsentLightBgColor: color.New(color.FgHiBlack),
MsgDarkBgColor: color.New(color.FgHiWhite),
MsgAbsentDarkBgColor: color.New(color.FgWhite),
DebugLevelColor: color.New(color.FgMagenta),
InfoLevelColor: color.New(color.FgCyan),
WarnLevelColor: color.New(color.FgYellow),
ErrorLevelColor: color.New(color.FgRed),
PanicLevelColor: color.New(color.BgRed),
FatalLevelColor: color.New(color.BgHiRed, color.FgHiWhite),
UnknownLevelColor: color.New(color.FgMagenta),
}

type HandlerOptions struct {
Expand All @@ -46,18 +49,21 @@ type HandlerOptions struct {
TruncateLength int
TimeFormat string

KeyColor *color.Color
ValColor *color.Color
TimeColor *color.Color
MsgColor *color.Color
MsgAbsentColor *color.Color
DebugLevelColor *color.Color
InfoLevelColor *color.Color
WarnLevelColor *color.Color
ErrorLevelColor *color.Color
PanicLevelColor *color.Color
FatalLevelColor *color.Color
UnknownLevelColor *color.Color
KeyColor *color.Color
ValColor *color.Color
TimeLightBgColor *color.Color
TimeDarkBgColor *color.Color
MsgLightBgColor *color.Color
MsgAbsentLightBgColor *color.Color
MsgDarkBgColor *color.Color
MsgAbsentDarkBgColor *color.Color
DebugLevelColor *color.Color
InfoLevelColor *color.Color
WarnLevelColor *color.Color
ErrorLevelColor *color.Color
PanicLevelColor *color.Color
FatalLevelColor *color.Color
UnknownLevelColor *color.Color
}

func (h *HandlerOptions) shouldShowKey(key string) bool {
Expand Down
28 changes: 25 additions & 3 deletions json_handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ import (
"strings"
"text/tabwriter"
"time"

"github.com/fatih/color"
)

// JSONHandler can handle logs emmited by logrus.TextFormatter loggers.
Expand Down Expand Up @@ -125,11 +127,25 @@ func (h *JSONHandler) Prettify(skipUnchanged bool) []byte {
h.out = tabwriter.NewWriter(h.buf, 0, 1, 0, '\t', 0)
}

var (
msgColor *color.Color
msgAbsentColor *color.Color
)
if h.Opts.LightBg {
msgColor = h.Opts.MsgLightBgColor
msgAbsentColor = h.Opts.MsgAbsentLightBgColor
} else {
msgColor = h.Opts.MsgDarkBgColor
msgAbsentColor = h.Opts.MsgAbsentDarkBgColor
}
msgColor = color.New(color.FgHiWhite)
msgAbsentColor = color.New(color.FgHiWhite)

var msg string
if h.Message == "" {
msg = h.Opts.MsgAbsentColor.Sprint("<no msg>")
msg = msgAbsentColor.Sprint("<no msg>")
} else {
msg = h.Opts.MsgColor.Sprint(h.Message)
msg = msgColor.Sprint(h.Message)
}

lvl := strings.ToUpper(h.Level)[:imin(4, len(h.Level))]
Expand All @@ -149,8 +165,14 @@ func (h *JSONHandler) Prettify(skipUnchanged bool) []byte {
level = h.Opts.UnknownLevelColor.Sprint(lvl)
}

var timeColor *color.Color
if h.Opts.LightBg {
timeColor = h.Opts.TimeLightBgColor
} else {
timeColor = h.Opts.TimeDarkBgColor
}
_, _ = fmt.Fprintf(h.out, "%s |%s| %s\t %s",
h.Opts.TimeColor.Sprint(h.Time.Format(h.Opts.TimeFormat)),
timeColor.Sprint(h.Time.Format(h.Opts.TimeFormat)),
level,
msg,
strings.Join(h.joinKVs(skipUnchanged, "="), "\t "),
Expand Down
26 changes: 23 additions & 3 deletions logrus_handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ import (
"strings"
"text/tabwriter"
"time"

"github.com/fatih/color"
)

// LogrusHandler can handle logs emmited by logrus.TextFormatter loggers.
Expand Down Expand Up @@ -81,11 +83,23 @@ func (h *LogrusHandler) Prettify(skipUnchanged bool) []byte {
h.out = tabwriter.NewWriter(h.buf, 0, 1, 0, '\t', 0)
}

var (
msgColor *color.Color
msgAbsentColor *color.Color
)
if h.Opts.LightBg {
msgColor = h.Opts.MsgLightBgColor
msgAbsentColor = h.Opts.MsgAbsentLightBgColor
} else {
msgColor = h.Opts.MsgDarkBgColor
msgAbsentColor = h.Opts.MsgAbsentDarkBgColor
}

var msg string
if h.Message == "" {
msg = h.Opts.MsgAbsentColor.Sprint("<no msg>")
msg = msgAbsentColor.Sprint("<no msg>")
} else {
msg = h.Opts.MsgColor.Sprint(h.Message)
msg = msgColor.Sprint(h.Message)
}

lvl := strings.ToUpper(h.Level)[:imin(4, len(h.Level))]
Expand All @@ -105,8 +119,14 @@ func (h *LogrusHandler) Prettify(skipUnchanged bool) []byte {
level = h.Opts.UnknownLevelColor.Sprint(lvl)
}

var timeColor *color.Color
if h.Opts.LightBg {
timeColor = h.Opts.TimeLightBgColor
} else {
timeColor = h.Opts.TimeDarkBgColor
}
_, _ = fmt.Fprintf(h.out, "%s |%s| %s\t %s",
h.Opts.TimeColor.Sprint(h.Time.Format(h.Opts.TimeFormat)),
timeColor.Sprint(h.Time.Format(h.Opts.TimeFormat)),
level,
msg,
strings.Join(h.joinKVs(skipUnchanged, "="), "\t "),
Expand Down

0 comments on commit 84b0b19

Please sign in to comment.