diff --git a/config/logging.go b/config/logging.go index 29bbe39..d433839 100644 --- a/config/logging.go +++ b/config/logging.go @@ -41,8 +41,43 @@ func (f *CustomFormatter) Format(entry *logrus.Entry) ([]byte, error) { line = entry.Caller.Line } - logLine := fmt.Sprintf("[%s][%s][%s:%d] %s\n", - level, timestamp, file, line, msg) + colorCode := f.getLevelColor(entry.Level) + resetCode := "\033[0m" + coloredLevel := fmt.Sprintf("%s[%s]%s", colorCode, level, resetCode) + + errVal := entry.Data["error"] + if errVal == nil { + errVal = "\n" + } else { + errVal = fmt.Sprintf("---%v\n\n", errVal) + } + + cyanCode := f.getLevelColor(logrus.TraceLevel) + filename := fmt.Sprintf("%s[%s:%d]%s", cyanCode, file, line, resetCode) + + logLine := fmt.Sprintf("%s[%s]%v %s\n%v", + coloredLevel, timestamp, filename, msg, errVal) return []byte(logLine), nil } + +func (f *CustomFormatter) getLevelColor(level logrus.Level) string { + switch level { + case logrus.PanicLevel: + return "\033[35m" // Magenta + case logrus.FatalLevel: + return "\033[35m" // Magenta + case logrus.ErrorLevel: + return "\033[31m" // Red + case logrus.WarnLevel: + return "\033[33m" // Yellow + case logrus.InfoLevel: + return "\033[32m" // Green + case logrus.DebugLevel: + return "\033[34m" // Blue + case logrus.TraceLevel: + return "\033[36m" // Cyan + default: + return "\033[0m" // No color + } +}