diff --git a/log/formatting.go b/log/formatting.go index 8d2c4c8..581e5b3 100644 --- a/log/formatting.go +++ b/log/formatting.go @@ -40,14 +40,14 @@ func formatLine(line *logLine, useColor bool) string { var fLine string if line.line == 0 { - fLine = fmt.Sprintf("%s%s ? ▶ %s %03d%s %s", colorStart, line.time.Format("060102 15:04:05.000"), line.level.String(), counter, colorEnd, line.msg) + fLine = fmt.Sprintf("%s%s ? %s %s %03d%s %s", colorStart, line.time.Format("060102 15:04:05.000"), rightArrow, line.level.String(), counter, colorEnd, line.msg) } else { fLen := len(line.file) fPartStart := fLen - 10 if fPartStart < 0 { fPartStart = 0 } - fLine = fmt.Sprintf("%s%s %s:%03d ▶ %s %03d%s %s", colorStart, line.time.Format("060102 15:04:05.000"), line.file[fPartStart:], line.line, line.level.String(), counter, colorEnd, line.msg) + fLine = fmt.Sprintf("%s%s %s:%03d %s %s %03d%s %s", colorStart, line.time.Format("060102 15:04:05.000"), line.file[fPartStart:], line.line, rightArrow, line.level.String(), counter, colorEnd, line.msg) } if counter >= maxCount { diff --git a/log/formatting_nix.go b/log/formatting_linux.go similarity index 78% rename from log/formatting_nix.go rename to log/formatting_linux.go index 9b8996e..4b8096e 100644 --- a/log/formatting_nix.go +++ b/log/formatting_linux.go @@ -1,8 +1,9 @@ -// Copyright Safing ICS Technologies GmbH. Use of this source code is governed by the AGPL license that can be found in the LICENSE file. - package log -type color int +const ( + rightArrow = "▶" + leftArrow = "◀" +) const ( // colorBlack = "\033[30m" diff --git a/log/formatting_windows.go b/log/formatting_windows.go new file mode 100644 index 0000000..2889321 --- /dev/null +++ b/log/formatting_windows.go @@ -0,0 +1,56 @@ +package log + +import ( + "github.com/Safing/portbase/utils/osdetail" +) + +const ( + rightArrow = ">" + leftArrow = "<" +) + +const ( + // colorBlack = "\033[30m" + colorRed = "\033[31m" + // colorGreen = "\033[32m" + colorYellow = "\033[33m" + colorBlue = "\033[34m" + colorMagenta = "\033[35m" + colorCyan = "\033[36m" + // colorWhite = "\033[37m" +) + +var ( + colorsSupported bool +) + +func init() { + colorsSupported = osdetail.EnableColorSupport() +} + +func (s severity) color() string { + if colorsSupported { + switch s { + case DebugLevel: + return colorCyan + case InfoLevel: + return colorBlue + case WarningLevel: + return colorYellow + case ErrorLevel: + return colorRed + case CriticalLevel: + return colorMagenta + default: + return "" + } + } + return "" +} + +func endColor() string { + if colorsSupported { + return "\033[0m" + } + return "" +} diff --git a/log/output.go b/log/output.go index ae50f30..02225e7 100644 --- a/log/output.go +++ b/log/output.go @@ -20,7 +20,7 @@ func writeLine(line *logLine) { func startWriter() { shutdownWaitGroup.Add(1) - fmt.Println(fmt.Sprintf("%s%s ▶ BOF%s", InfoLevel.color(), time.Now().Format("060102 15:04:05.000"), endColor())) + fmt.Println(fmt.Sprintf("%s%s %s BOF%s", InfoLevel.color(), time.Now().Format("060102 15:04:05.000"), rightArrow, endColor())) go writer() } @@ -49,7 +49,7 @@ func writer() { case line = <-logBuffer: writeLine(line) case <-time.After(10 * time.Millisecond): - fmt.Println(fmt.Sprintf("%s%s ◀ EOF%s", InfoLevel.color(), time.Now().Format("060102 15:04:05.000"), endColor())) + fmt.Println(fmt.Sprintf("%s%s %s EOF%s", InfoLevel.color(), time.Now().Format("060102 15:04:05.000"), leftArrow, endColor())) return } }