From b14229b5f0aeb268f98afe974efc17331a5573ba Mon Sep 17 00:00:00 2001 From: CodeShell <122738806+CodeShellDev@users.noreply.github.com> Date: Fri, 31 Oct 2025 16:43:44 +0100 Subject: [PATCH 1/8] add custom `dev` loglevel without any workarounds --- utils/logger/levels.go | 46 ++++++++++++++++++++++++++++++++++++++++++ utils/logger/logger.go | 29 ++++++-------------------- 2 files changed, 52 insertions(+), 23 deletions(-) create mode 100644 utils/logger/levels.go diff --git a/utils/logger/levels.go b/utils/logger/levels.go new file mode 100644 index 00000000..57a7b262 --- /dev/null +++ b/utils/logger/levels.go @@ -0,0 +1,46 @@ +package logger + +import ( + "strings" + + "go.uber.org/zap/zapcore" +) + +const DeveloperLevel zapcore.Level = -2 + +func ParseLevel(s string) zapcore.Level { + switch strings.ToLower(s) { + case "dev": + return DeveloperLevel + case "debug": + return zapcore.DebugLevel + case "info": + return zapcore.InfoLevel + case "warn": + return zapcore.WarnLevel + case "error": + return zapcore.ErrorLevel + case "fatal": + return zapcore.FatalLevel + default: + return zapcore.InfoLevel + } +} + +func LevelString(l zapcore.Level) string { + switch l { + case DeveloperLevel: + return "DEV" + default: + return strings.ToUpper(l.String()) + } +} + +func CustomEncodeLevel(l zapcore.Level, enc zapcore.PrimitiveArrayEncoder) { + switch l { + case DeveloperLevel: + enc.AppendString(LevelString(l)) + default: + zapcore.CapitalColorLevelEncoder(l, enc) + } +} diff --git a/utils/logger/logger.go b/utils/logger/logger.go index 899eeb28..80f16f62 100644 --- a/utils/logger/logger.go +++ b/utils/logger/logger.go @@ -14,7 +14,7 @@ var _logLevel = "" func Init(level string) { _logLevel = strings.ToLower(level) - logLevel := getLogLevel(_logLevel) + logLevel := ParseLevel(_logLevel) cfg := zap.Config{ Level: zap.NewAtomicLevelAt(logLevel), @@ -29,7 +29,7 @@ func Init(level string) { MessageKey: "msg", StacktraceKey: "stacktrace", LineEnding: zapcore.DefaultLineEnding, - EncodeLevel: zapcore.CapitalColorLevelEncoder, + EncodeLevel: CustomEncodeLevel, EncodeTime: zapcore.TimeEncoderOfLayout("02.01 15:04"), EncodeDuration: zapcore.StringDurationEncoder, EncodeCaller: zapcore.ShortCallerEncoder, @@ -47,25 +47,6 @@ func Init(level string) { } } -func getLogLevel(level string) zapcore.Level { - switch level { - case "info": - return zapcore.InfoLevel - case "debug": - return zapcore.DebugLevel - case "dev": - return zapcore.DebugLevel - case "warn": - return zapcore.WarnLevel - case "error": - return zapcore.ErrorLevel - case "fatal": - return zapcore.FatalLevel - default: - return zapcore.InfoLevel - } -} - func Level() string { return _log.Level().String() } @@ -79,8 +60,10 @@ func Debug(msg ...string) { } func Dev(msg ...string) { - if _logLevel == "dev" { - _log.Debug(strings.Join(msg, "")) + ok := _log.Check(DeveloperLevel, strings.Join(msg, "")) + + if ok != nil { + ok.Write() } } From 79464e64fe5b78b036ccd46f018806636d39a274 Mon Sep 17 00:00:00 2001 From: CodeShell <122738806+CodeShellDev@users.noreply.github.com> Date: Sat, 1 Nov 2025 13:24:57 +0100 Subject: [PATCH 2/8] improve `dev` loglevel integration --- utils/logger/levels.go | 13 +++++++++++-- utils/logger/logger.go | 4 ++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/utils/logger/levels.go b/utils/logger/levels.go index 57a7b262..88072548 100644 --- a/utils/logger/levels.go +++ b/utils/logger/levels.go @@ -28,18 +28,27 @@ func ParseLevel(s string) zapcore.Level { } func LevelString(l zapcore.Level) string { + switch l { + case DeveloperLevel: + return "dev" + default: + return l.CapitalString() + } +} + +func CapitalLevel(l zapcore.Level) string { switch l { case DeveloperLevel: return "DEV" default: - return strings.ToUpper(l.String()) + return l.CapitalString() } } func CustomEncodeLevel(l zapcore.Level, enc zapcore.PrimitiveArrayEncoder) { switch l { case DeveloperLevel: - enc.AppendString(LevelString(l)) + enc.AppendString(CapitalLevel(l)) default: zapcore.CapitalColorLevelEncoder(l, enc) } diff --git a/utils/logger/logger.go b/utils/logger/logger.go index 80f16f62..0fc6f760 100644 --- a/utils/logger/logger.go +++ b/utils/logger/logger.go @@ -43,12 +43,12 @@ func Init(level string) { _log, err = cfg.Build(zap.AddCaller(), zap.AddCallerSkip(1)) if err != nil { - fmt.Println("Encountered Error during Log.Init(): err.Error()") + fmt.Println("Encountered Error during Log.Init(): ", err.Error()) } } func Level() string { - return _log.Level().String() + return LevelString(_log.Level()) } func Info(msg ...string) { From c39c2f44a489301bb41f0e0da07d4caa60568ce1 Mon Sep 17 00:00:00 2001 From: CodeShell <122738806+CodeShellDev@users.noreply.github.com> Date: Sat, 1 Nov 2025 13:44:50 +0100 Subject: [PATCH 3/8] add welcome message and dev funcs --- main.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/main.go b/main.go index d69ca4f4..73201daf 100644 --- a/main.go +++ b/main.go @@ -32,6 +32,11 @@ func main() { log.Info("Initialized Logger with Level of ", log.Level()) + if log.Level() == "dev" { + log.Dev("Welcome back Developer!") + log.Dev("CTRL+S config to Print to Console") + } + proxy = reverseProxy.Create(ENV.API_URL) handler := proxy.Init() From 462d6bebe33c804873d9156c8d3829c30122aa85 Mon Sep 17 00:00:00 2001 From: CodeShell <122738806+CodeShellDev@users.noreply.github.com> Date: Sat, 1 Nov 2025 13:45:00 +0100 Subject: [PATCH 4/8] add color to DEV (bright green) --- utils/logger/levels.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/logger/levels.go b/utils/logger/levels.go index 88072548..0f7118b5 100644 --- a/utils/logger/levels.go +++ b/utils/logger/levels.go @@ -39,7 +39,7 @@ func LevelString(l zapcore.Level) string { func CapitalLevel(l zapcore.Level) string { switch l { case DeveloperLevel: - return "DEV" + return "\033[92mDEV\033[0m" default: return l.CapitalString() } From 8e5ab783ddde6b9091fbb745ae172e0fa46461ff Mon Sep 17 00:00:00 2001 From: CodeShell <122738806+CodeShellDev@users.noreply.github.com> Date: Sat, 1 Nov 2025 14:08:25 +0100 Subject: [PATCH 5/8] change color --- utils/logger/levels.go | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/utils/logger/levels.go b/utils/logger/levels.go index 0f7118b5..abeddcc8 100644 --- a/utils/logger/levels.go +++ b/utils/logger/levels.go @@ -1,6 +1,9 @@ package logger import ( + "fmt" + "image/color" + "strconv" "strings" "go.uber.org/zap/zapcore" @@ -27,6 +30,18 @@ func ParseLevel(s string) zapcore.Level { } } +func ColorCode(str string, color color.RGBA) string { + r, g, b := color.R, color.G, color.B + + red, green, blue := int(r), int(g), int(b) + + colorStr := strconv.Itoa(red) + ";" + strconv.Itoa(green) + ";" + strconv.Itoa(blue) + + fmt.Println(colorStr) + + return "\x1b[38;2;" + colorStr + "m" + str + "\x1b[0m" +} + func LevelString(l zapcore.Level) string { switch l { case DeveloperLevel: @@ -39,7 +54,9 @@ func LevelString(l zapcore.Level) string { func CapitalLevel(l zapcore.Level) string { switch l { case DeveloperLevel: - return "\033[92mDEV\033[0m" + return ColorCode("DEV", color.RGBA{ + R: 95, G: 175, B: 135, + }) default: return l.CapitalString() } From d1b1953f1309db5f07bb84fa14c744f79cda2c5a Mon Sep 17 00:00:00 2001 From: CodeShell <122738806+CodeShellDev@users.noreply.github.com> Date: Sat, 1 Nov 2025 14:12:31 +0100 Subject: [PATCH 6/8] remove fmtprint --- utils/logger/levels.go | 3 --- 1 file changed, 3 deletions(-) diff --git a/utils/logger/levels.go b/utils/logger/levels.go index abeddcc8..89744fa3 100644 --- a/utils/logger/levels.go +++ b/utils/logger/levels.go @@ -1,7 +1,6 @@ package logger import ( - "fmt" "image/color" "strconv" "strings" @@ -37,8 +36,6 @@ func ColorCode(str string, color color.RGBA) string { colorStr := strconv.Itoa(red) + ";" + strconv.Itoa(green) + ";" + strconv.Itoa(blue) - fmt.Println(colorStr) - return "\x1b[38;2;" + colorStr + "m" + str + "\x1b[0m" } From d3e8a290ac0a18486e942e49174179b46b7ac42e Mon Sep 17 00:00:00 2001 From: CodeShell <122738806+CodeShellDev@users.noreply.github.com> Date: Sat, 1 Nov 2025 14:18:38 +0100 Subject: [PATCH 7/8] debug misalignment --- utils/logger/levels.go | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/utils/logger/levels.go b/utils/logger/levels.go index 89744fa3..f4b47724 100644 --- a/utils/logger/levels.go +++ b/utils/logger/levels.go @@ -51,9 +51,7 @@ func LevelString(l zapcore.Level) string { func CapitalLevel(l zapcore.Level) string { switch l { case DeveloperLevel: - return ColorCode("DEV", color.RGBA{ - R: 95, G: 175, B: 135, - }) + return "DEV" default: return l.CapitalString() } From e9d7b1accff7763e442ed71c0152ba915d5ba9c6 Mon Sep 17 00:00:00 2001 From: CodeShell <122738806+CodeShellDev@users.noreply.github.com> Date: Sat, 1 Nov 2025 14:21:46 +0100 Subject: [PATCH 8/8] add spaces for alignment --- utils/logger/levels.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/utils/logger/levels.go b/utils/logger/levels.go index f4b47724..507191f3 100644 --- a/utils/logger/levels.go +++ b/utils/logger/levels.go @@ -51,7 +51,9 @@ func LevelString(l zapcore.Level) string { func CapitalLevel(l zapcore.Level) string { switch l { case DeveloperLevel: - return "DEV" + return ColorCode("DEV ", color.RGBA{ + R: 95, G: 175, B: 135, + }) default: return l.CapitalString() }