From d804beb076281f10cd2e8c2f56868fa389331eda Mon Sep 17 00:00:00 2001 From: Antonette Caldwell Date: Wed, 2 Aug 2023 13:23:44 -0500 Subject: [PATCH 1/2] set log level custom, and added formatting Signed-off-by: Antonette Caldwell --- logger/logger.go | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/logger/logger.go b/logger/logger.go index 3a941a0a..bce611be 100644 --- a/logger/logger.go +++ b/logger/logger.go @@ -1,6 +1,7 @@ package logger import ( + "fmt" "os" "time" @@ -16,15 +17,26 @@ type Handler interface { Warn(err error) Error(err error) + Infof(format string, args ...interface{}) + Debugf(format string, args ...interface{}) + Errorf(format string, args ...interface{}) + Warnf(format string, args ...interface{}) + // Kubernetes Controller compliant logger ControllerLogger() logr.Logger DatabaseLogger() gormlogger.Interface + + SetLevel(level logrus.Level) } type Logger struct { handler *logrus.Entry } +func (l *Logger) SetLevel(level logrus.Level) { + l.handler.Logger.SetLevel(level) +} + // TerminalFormatter is exported type TerminalFormatter struct{} @@ -80,18 +92,33 @@ func (l *Logger) Error(err error) { }).Log(logrus.ErrorLevel, err.Error()) } +func (l *Logger) Errorf(format string, args ...interface{}) { + message := fmt.Sprintf(format, args...) + l.handler.Logger.Error(message) +} + func (l *Logger) Info(description ...interface{}) { l.handler.Log(logrus.InfoLevel, description..., ) } +func (l *Logger) Infof(format string, args ...interface{}) { + message := fmt.Sprintf(format, args...) + l.handler.Log(logrus.InfoLevel, message) +} + func (l *Logger) Debug(description ...interface{}) { l.handler.Log(logrus.DebugLevel, description..., ) } +func (l *Logger) Debugf(format string, args ...interface{}) { + message := fmt.Sprintf(format, args...) + l.handler.Log(logrus.DebugLevel, message) +} + func (l *Logger) Warn(err error) { if err == nil { return @@ -105,3 +132,8 @@ func (l *Logger) Warn(err error) { "suggested-remediation": errors.GetRemedy(err), }).Log(logrus.WarnLevel, err.Error()) } + +func (l *Logger) Warnf(format string, args ...interface{}) { + message := fmt.Sprintf(format, args...) + l.handler.Log(logrus.WarnLevel, message) +} From 15918d9a3ba52ee2c1959be77c7c1b901ad87f5c Mon Sep 17 00:00:00 2001 From: Antonette Caldwell Date: Sat, 5 Aug 2023 12:03:51 -0500 Subject: [PATCH 2/2] fixed up terminal formatter to account for other fields Signed-off-by: Antonette Caldwell --- logger/logger.go | 56 ++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 49 insertions(+), 7 deletions(-) diff --git a/logger/logger.go b/logger/logger.go index bce611be..e9b0895b 100644 --- a/logger/logger.go +++ b/logger/logger.go @@ -19,8 +19,8 @@ type Handler interface { Infof(format string, args ...interface{}) Debugf(format string, args ...interface{}) - Errorf(format string, args ...interface{}) - Warnf(format string, args ...interface{}) + Errorf(err error, format string, args ...interface{}) + Warnf(err error, format string, args ...interface{}) // Kubernetes Controller compliant logger ControllerLogger() logr.Logger @@ -41,11 +41,29 @@ func (l *Logger) SetLevel(level logrus.Level) { type TerminalFormatter struct{} // Format defined the format of output for Logrus logs -// Format is exported func (f *TerminalFormatter) Format(entry *logrus.Entry) ([]byte, error) { + if entry.Level == logrus.ErrorLevel || entry.Level == logrus.WarnLevel { + return f.formatDetails(entry), nil + } return append([]byte(entry.Message), '\n'), nil } +func (f *TerminalFormatter) formatDetails(entry *logrus.Entry) []byte { + level := "Error" + if entry.Level == logrus.WarnLevel { + level = "Warning" + } + + output := fmt.Sprintf("%s: %s\n", level, entry.Message) + output += fmt.Sprintf(" Code: %v\n", entry.Data["code"]) + output += fmt.Sprintf(" Severity: %v\n", entry.Data["severity"]) + output += fmt.Sprintf(" Short Description: %v\n", entry.Data["short-description"]) + output += fmt.Sprintf(" Probable Cause: %v\n", entry.Data["probable-cause"]) + output += fmt.Sprintf(" Suggested Remediation: %v\n", entry.Data["suggested-remediation"]) + + return []byte(output) +} + func New(appname string, opts Options) (Handler, error) { log := logrus.New() @@ -92,9 +110,21 @@ func (l *Logger) Error(err error) { }).Log(logrus.ErrorLevel, err.Error()) } -func (l *Logger) Errorf(format string, args ...interface{}) { +func (l *Logger) Errorf(err error, format string, args ...interface{}) { + if err == nil { + return + } + message := fmt.Sprintf(format, args...) - l.handler.Logger.Error(message) + fullMessage := fmt.Sprintf("%s: %s", message, err.Error()) + + l.handler.WithFields(logrus.Fields{ + "code": errors.GetCode(err), + "severity": errors.GetSeverity(err), + "short-description": errors.GetSDescription(err), + "probable-cause": errors.GetCause(err), + "suggested-remediation": errors.GetRemedy(err), + }).Log(logrus.ErrorLevel, fullMessage) } func (l *Logger) Info(description ...interface{}) { @@ -133,7 +163,19 @@ func (l *Logger) Warn(err error) { }).Log(logrus.WarnLevel, err.Error()) } -func (l *Logger) Warnf(format string, args ...interface{}) { +func (l *Logger) Warnf(err error, format string, args ...interface{}) { + if err == nil { + return + } + message := fmt.Sprintf(format, args...) - l.handler.Log(logrus.WarnLevel, message) + fullMessage := fmt.Sprintf("%s: %s", message, err.Error()) + + l.handler.WithFields(logrus.Fields{ + "code": errors.GetCode(err), + "severity": errors.GetSeverity(err), + "short-description": errors.GetSDescription(err), + "probable-cause": errors.GetCause(err), + "suggested-remediation": errors.GetRemedy(err), + }).Log(logrus.WarnLevel, fullMessage) }