diff --git a/utils/logger/levels.go b/utils/logger/levels.go index 507191f3..8be48a80 100644 --- a/utils/logger/levels.go +++ b/utils/logger/levels.go @@ -30,13 +30,33 @@ func ParseLevel(s string) zapcore.Level { } func ColorCode(str string, color color.RGBA) string { - r, g, b := color.R, color.G, color.B + return startColor(color) + str + endColor() +} + +func ColorToInt(color color.RGBA) (int, int, int, int) { + r, g, b, a := color.R, color.G, color.B, color.A + + red, green, blue, alpha := int(r), int(g), int(b), int(a) + + return red, green, blue, alpha +} - red, green, blue := int(r), int(g), int(b) +func startColor(color color.RGBA) string { + red, green, blue, alpha := ColorToInt(color) + + mode := "38;2;" + + if alpha >= 255 { + mode = "48;2;" + } colorStr := strconv.Itoa(red) + ";" + strconv.Itoa(green) + ";" + strconv.Itoa(blue) - return "\x1b[38;2;" + colorStr + "m" + str + "\x1b[0m" + return "\x1b[" + mode + colorStr + "m" +} + +func endColor() string { + return "\x1b[0m" } func LevelString(l zapcore.Level) string { diff --git a/utils/logger/logger.go b/utils/logger/logger.go index 3eaf3c2f..15dc2745 100644 --- a/utils/logger/logger.go +++ b/utils/logger/logger.go @@ -60,9 +60,14 @@ func Format(data ...any) string { case int: res += strconv.Itoa(value) default: - res += "\n" + ColorCode(jsonutils.Pretty(value), color.RGBA{ - R: 0, G: 215, B: 135, - }) + lines := strings.Split(jsonutils.Pretty(value), "\n") + + lineStr := "" + + for _, line := range lines { + lineStr += "\n" + startColor(color.RGBA{ R: 0, G: 135, B: 95,}) + line + endColor() + } + res += lineStr } }