From 3bf6cc5aa6be4036678955217c49f0d9491735b6 Mon Sep 17 00:00:00 2001 From: mstmdev Date: Wed, 6 Sep 2023 11:07:12 +0800 Subject: [PATCH] Add the ErrorIf function for Logger interface (#25) --- base_logger.go | 11 +++++++++++ default_logger.go | 10 ++-------- empty_logger.go | 4 ++++ logger.go | 6 ++++++ multi_logger.go | 4 ++++ sample_logger.go | 4 ++++ 6 files changed, 31 insertions(+), 8 deletions(-) diff --git a/base_logger.go b/base_logger.go index a938356..7be1893 100644 --- a/base_logger.go +++ b/base_logger.go @@ -36,6 +36,10 @@ func (l *baseLogger) Error(err error, format string, args ...any) { l.logWithErr(err, level.ErrorLevel, format, args...) } +func (l *baseLogger) ErrorIf(err error, format string, args ...any) error { + return errorIf(l.Error, err, format, args...) +} + // Log write a format log func (l *baseLogger) Log(format string, args ...any) { format = formatter.AppendRowTerminator(format) @@ -96,3 +100,10 @@ func (l *baseLogger) setTimeFormat(f string) { func checkLogLevel(lvl level.Level, currentLevel level.Level) bool { return currentLevel >= lvl } + +func errorIf(f func(err error, format string, args ...any), err error, format string, args ...any) error { + if err != nil { + f(err, format, args...) + } + return err +} diff --git a/default_logger.go b/default_logger.go index 26049c5..3c1bb7b 100644 --- a/default_logger.go +++ b/default_logger.go @@ -54,10 +54,7 @@ func Error(err error, format string, args ...any) { // ErrorIf write the error log if err is not nil func ErrorIf(err error, format string, args ...any) error { - if err != nil { - Error(err, format, args...) - } - return err + return DefaultLogger().ErrorIf(err, format, args...) } // DebugSample write the debug log by random sampling @@ -82,10 +79,7 @@ func ErrorSample(err error, format string, args ...any) { // ErrorIfSample write the error log by random sampling if err is not nil func ErrorIfSample(err error, format string, args ...any) error { - if err != nil { - ErrorSample(err, format, args...) - } - return err + return DefaultSampleLogger().ErrorIf(err, format, args...) } // Log write the log without level diff --git a/empty_logger.go b/empty_logger.go index 8fb0bc2..6dbe48c 100644 --- a/empty_logger.go +++ b/empty_logger.go @@ -29,6 +29,10 @@ func (l *emptyLogger) Error(err error, format string, args ...any) { } +func (l *emptyLogger) ErrorIf(err error, format string, args ...any) error { + return err +} + func (l *emptyLogger) Log(format string, args ...any) { } diff --git a/logger.go b/logger.go index 8038b04..8e0a720 100644 --- a/logger.go +++ b/logger.go @@ -13,10 +13,16 @@ type Logger interface { Writer Option + // Debug write the debug log Debug(format string, args ...any) + // Info write the info log Info(format string, args ...any) + // Warn write the warn log Warn(format string, args ...any) + // Error write the error log Error(err error, format string, args ...any) + // ErrorIf write the error log if err is not nil + ErrorIf(err error, format string, args ...any) error } // Writer implement write to log diff --git a/multi_logger.go b/multi_logger.go index dfd39f7..b893de2 100644 --- a/multi_logger.go +++ b/multi_logger.go @@ -43,6 +43,10 @@ func (l *multiLogger) Error(err error, format string, args ...any) { } } +func (l *multiLogger) ErrorIf(err error, format string, args ...any) error { + return errorIf(l.Error, err, format, args...) +} + func (l *multiLogger) Log(format string, args ...any) { for _, logger := range l.loggers { logger.Log(format, args...) diff --git a/sample_logger.go b/sample_logger.go index 2d37742..6633b44 100644 --- a/sample_logger.go +++ b/sample_logger.go @@ -50,6 +50,10 @@ func (l *sampleLogger) Error(err error, format string, args ...any) { } } +func (l *sampleLogger) ErrorIf(err error, format string, args ...any) error { + return errorIf(l.Error, err, format, args...) +} + func (l *sampleLogger) Log(format string, args ...any) { l.logger.Log(format, args...) }