diff options
| author | Paul Buetow <paul@buetow.org> | 2021-09-06 09:22:21 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2021-09-06 09:22:21 +0300 |
| commit | 2c1c70313bb03cf2b2d7e7afadb07a48ff6bb690 (patch) | |
| tree | 2ea3402bc6dd2d3e3ce0754eb3d5c90305e87c2e /internal/color | |
| parent | c895b3c8293ddbf46d66278061d7e0127adc57f7 (diff) | |
REMOTE and CLIENT colors are brushed correctly too now
Diffstat (limited to 'internal/color')
| -rw-r--r-- | internal/color/brush/brush.go | 231 |
1 files changed, 149 insertions, 82 deletions
diff --git a/internal/color/brush/brush.go b/internal/color/brush/brush.go index 415028a..785a0d0 100644 --- a/internal/color/brush/brush.go +++ b/internal/color/brush/brush.go @@ -8,105 +8,165 @@ import ( "github.com/mimecast/dtail/internal/protocol" ) -// Add some color to log lines received from remote servers. +func paintSeverity(sb *strings.Builder, text string) bool { + switch { + case strings.HasPrefix(text, "WARN"): + color.PaintWithAttr(sb, text, + config.Client.TermColors.Common.SeverityWarnFg, + config.Client.TermColors.Common.SeverityWarnBg, + config.Client.TermColors.Common.SeverityWarnAttr) + + case strings.HasPrefix(text, "ERROR"): + color.PaintWithAttr(sb, text, + config.Client.TermColors.Common.SeverityErrorFg, + config.Client.TermColors.Common.SeverityErrorBg, + config.Client.TermColors.Common.SeverityErrorAttr) + + case strings.HasPrefix(text, "FATAL"): + color.PaintWithAttr(sb, text, + config.Client.TermColors.Common.SeverityFatalFg, + config.Client.TermColors.Common.SeverityFatalBg, + config.Client.TermColors.Common.SeverityFatalAttr) + + default: + return false + } + + return true +} + func paintRemote(sb *strings.Builder, line string) { splitted := strings.SplitN(line, protocol.FieldDelimiter, 6) color.PaintWithAttr(sb, splitted[0], - config.Client.TermColors.RemoteStrFg, - config.Client.TermColors.RemoteStrBg, - config.Client.TermColors.RemoteStrAttr) + config.Client.TermColors.Remote.RemoteFg, + config.Client.TermColors.Remote.RemoteBg, + config.Client.TermColors.Remote.RemoteAttr) color.PaintWithAttr(sb, protocol.FieldDelimiter, - config.Client.TermColors.DelimiterFg, - config.Client.TermColors.DelimiterBg, - config.Client.TermColors.DelimiterAttr) + config.Client.TermColors.Remote.DelimiterFg, + config.Client.TermColors.Remote.DelimiterBg, + config.Client.TermColors.Remote.DelimiterAttr) color.PaintWithAttr(sb, splitted[1], - config.Client.TermColors.RemoteServerFg, - config.Client.TermColors.RemoteServerBg, - config.Client.TermColors.RemoteServerAttr) + config.Client.TermColors.Remote.HostnameFg, + config.Client.TermColors.Remote.HostnameBg, + config.Client.TermColors.Remote.HostnameAttr) color.PaintWithAttr(sb, protocol.FieldDelimiter, - config.Client.TermColors.DelimiterFg, - config.Client.TermColors.DelimiterBg, - config.Client.TermColors.DelimiterAttr) + config.Client.TermColors.Remote.DelimiterFg, + config.Client.TermColors.Remote.DelimiterBg, + config.Client.TermColors.Remote.DelimiterAttr) if splitted[2] == "100" { color.PaintWithAttr(sb, splitted[2], - config.Client.TermColors.RemoteStatsOkFg, - config.Client.TermColors.RemoteStatsOkBg, - config.Client.TermColors.RemoteStatsOkAttr) + config.Client.TermColors.Remote.StatsOkFg, + config.Client.TermColors.Remote.StatsOkBg, + config.Client.TermColors.Remote.StatsOkAttr) } else { color.PaintWithAttr(sb, splitted[2], - config.Client.TermColors.RemoteStatsWarnFg, - config.Client.TermColors.RemoteStatsWarnBg, - config.Client.TermColors.RemoteStatsWarnAttr) + config.Client.TermColors.Remote.StatsWarnFg, + config.Client.TermColors.Remote.StatsWarnBg, + config.Client.TermColors.Remote.StatsWarnAttr) } color.PaintWithAttr(sb, protocol.FieldDelimiter, - config.Client.TermColors.DelimiterFg, - config.Client.TermColors.DelimiterBg, - config.Client.TermColors.DelimiterAttr) + config.Client.TermColors.Remote.DelimiterFg, + config.Client.TermColors.Remote.DelimiterBg, + config.Client.TermColors.Remote.DelimiterAttr) color.PaintWithAttr(sb, splitted[3], - config.Client.TermColors.RemoteCountFg, - config.Client.TermColors.RemoteCountBg, - config.Client.TermColors.RemoteCountAttr) + config.Client.TermColors.Remote.CountFg, + config.Client.TermColors.Remote.CountBg, + config.Client.TermColors.Remote.CountAttr) color.PaintWithAttr(sb, protocol.FieldDelimiter, - config.Client.TermColors.DelimiterFg, - config.Client.TermColors.DelimiterBg, - config.Client.TermColors.DelimiterAttr) + config.Client.TermColors.Remote.DelimiterFg, + config.Client.TermColors.Remote.DelimiterBg, + config.Client.TermColors.Remote.DelimiterAttr) color.PaintWithAttr(sb, splitted[4], - config.Client.TermColors.RemoteIdFg, - config.Client.TermColors.RemoteIdBg, - config.Client.TermColors.RemoteIdAttr) + config.Client.TermColors.Remote.IdFg, + config.Client.TermColors.Remote.IdBg, + config.Client.TermColors.Remote.IdAttr) color.PaintWithAttr(sb, protocol.FieldDelimiter, - config.Client.TermColors.DelimiterFg, - config.Client.TermColors.DelimiterBg, - config.Client.TermColors.DelimiterAttr) + config.Client.TermColors.Remote.DelimiterFg, + config.Client.TermColors.Remote.DelimiterBg, + config.Client.TermColors.Remote.DelimiterAttr) - log := splitted[5] + if paintSeverity(sb, splitted[5]) { + return + } + color.PaintWithAttr(sb, splitted[5], + config.Client.TermColors.Remote.TextFg, + config.Client.TermColors.Remote.TextBg, + config.Client.TermColors.Remote.TextAttr) +} - switch { - case strings.HasPrefix(log, "WARN"): - color.PaintWithAttr(sb, log, - config.Client.TermColors.RemoteWarnFg, - config.Client.TermColors.RemoteWarnBg, - config.Client.TermColors.RemoteWarnAttr) - - case strings.HasPrefix(log, "ERROR"): - color.PaintWithAttr(sb, log, - config.Client.TermColors.RemoteErrorFg, - config.Client.TermColors.RemoteErrorBg, - config.Client.TermColors.RemoteErrorAttr) - - case strings.HasPrefix(log, "FATAL"): - color.PaintWithAttr(sb, log, - config.Client.TermColors.RemoteFatalFg, - config.Client.TermColors.RemoteFatalBg, - config.Client.TermColors.RemoteFatalAttr) - - case strings.HasPrefix(log, "DEBUG"): - color.PaintWithAttr(sb, log, - config.Client.TermColors.RemoteDebugFg, - config.Client.TermColors.RemoteDebugBg, - config.Client.TermColors.RemoteDebugAttr) - - case strings.HasPrefix(log, "TRACE"): - color.PaintWithAttr(sb, log, - config.Client.TermColors.RemoteTraceFg, - config.Client.TermColors.RemoteTraceBg, - config.Client.TermColors.RemoteTraceAttr) +func paintClient(sb *strings.Builder, line string) { + splitted := strings.SplitN(line, protocol.FieldDelimiter, 3) - default: - color.PaintWithAttr(sb, log, - config.Client.TermColors.RemoteTextFg, - config.Client.TermColors.RemoteTextBg, - config.Client.TermColors.RemoteTextAttr) + color.PaintWithAttr(sb, splitted[0], + config.Client.TermColors.Client.ClientFg, + config.Client.TermColors.Client.ClientBg, + config.Client.TermColors.Client.ClientAttr) + + color.PaintWithAttr(sb, protocol.FieldDelimiter, + config.Client.TermColors.Client.DelimiterFg, + config.Client.TermColors.Client.DelimiterBg, + config.Client.TermColors.Client.DelimiterAttr) + + color.PaintWithAttr(sb, splitted[1], + config.Client.TermColors.Client.HostnameFg, + config.Client.TermColors.Client.HostnameBg, + config.Client.TermColors.Client.HostnameAttr) + + color.PaintWithAttr(sb, protocol.FieldDelimiter, + config.Client.TermColors.Client.DelimiterFg, + config.Client.TermColors.Client.DelimiterBg, + config.Client.TermColors.Client.DelimiterAttr) + + if paintSeverity(sb, splitted[2]) { + return } + + color.PaintWithAttr(sb, splitted[2], + config.Client.TermColors.Client.TextFg, + config.Client.TermColors.Client.TextBg, + config.Client.TermColors.Client.TextAttr) +} + +func paintServer(sb *strings.Builder, line string) { + splitted := strings.SplitN(line, protocol.FieldDelimiter, 3) + + color.PaintWithAttr(sb, splitted[0], + config.Client.TermColors.Server.ServerFg, + config.Client.TermColors.Server.ServerBg, + config.Client.TermColors.Server.ServerAttr) + + color.PaintWithAttr(sb, protocol.FieldDelimiter, + config.Client.TermColors.Server.DelimiterFg, + config.Client.TermColors.Server.DelimiterBg, + config.Client.TermColors.Server.DelimiterAttr) + + color.PaintWithAttr(sb, splitted[1], + config.Client.TermColors.Server.HostnameFg, + config.Client.TermColors.Server.HostnameBg, + config.Client.TermColors.Server.HostnameAttr) + + color.PaintWithAttr(sb, protocol.FieldDelimiter, + config.Client.TermColors.Server.DelimiterFg, + config.Client.TermColors.Server.DelimiterBg, + config.Client.TermColors.Server.DelimiterAttr) + + if paintSeverity(sb, splitted[2]) { + return + } + + color.PaintWithAttr(sb, splitted[2], + config.Client.TermColors.Server.TextFg, + config.Client.TermColors.Server.TextBg, + config.Client.TermColors.Server.TextAttr) } // Colorfy a given line based on the line's content. @@ -117,18 +177,25 @@ func Colorfy(line string) string { case strings.HasPrefix(line, "REMOTE"): paintRemote(&sb, line) - case strings.Contains(line, "ERROR"): - color.PaintWithAttr(&sb, line, - config.Client.TermColors.ClientErrorFg, - config.Client.TermColors.ClientErrorBg, - config.Client.TermColors.ClientErrorAttr) - - case strings.Contains(line, "WARN"): - color.PaintWithAttr(&sb, line, - config.Client.TermColors.ClientWarnFg, - config.Client.TermColors.ClientWarnBg, - config.Client.TermColors.ClientWarnAttr) - + case strings.HasPrefix(line, "CLIENT"): + paintClient(&sb, line) + + case strings.HasPrefix(line, "SERVER"): + paintServer(&sb, line) + + /* + case strings.Contains(line, "ERROR"): + color.PaintWithAttr(&sb, line, + config.Client.TermColors.ClientErrorFg, + config.Client.TermColors.ClientErrorBg, + config.Client.TermColors.ClientErrorAttr) + + case strings.Contains(line, "WARN"): + color.PaintWithAttr(&sb, line, + config.Client.TermColors.ClientWarnFg, + config.Client.TermColors.ClientWarnBg, + config.Client.TermColors.ClientWarnAttr) + */ default: color.PaintWithAttr(&sb, line, color.FgDefault, |
