From 3f222fc2be9f0a386c288c58d9bae610bb3319c1 Mon Sep 17 00:00:00 2001 From: Christian Schaible Date: Mon, 7 Oct 2024 14:20:39 +0200 Subject: [PATCH] Split log implementations --- log/log.go | 57 +---------------------------------- log/log_test.go | 73 --------------------------------------------- log/slog.go | 35 ++++++++++++++++++++++ log/slog_test.go | 43 ++++++++++++++++++++++++++ log/zerolog.go | 25 ++++++++++++++++ log/zerolog_test.go | 42 ++++++++++++++++++++++++++ 6 files changed, 146 insertions(+), 129 deletions(-) create mode 100644 log/slog.go create mode 100644 log/slog_test.go create mode 100644 log/zerolog.go create mode 100644 log/zerolog_test.go diff --git a/log/log.go b/log/log.go index b1a8266..af5da7b 100644 --- a/log/log.go +++ b/log/log.go @@ -4,17 +4,8 @@ import ( "errors" "log/slog" ) -import "github.com/rs/zerolog/log" -var AuditLogger = NewSlogAuditLogger(slog.Default()) - -func NewSlogAuditLogger(logger *slog.Logger) Logger { - return SlogLogger{logger: logger} -} - -func NewZerologAuditLogger() Logger { - return ZeroLogLogger{} -} +var AuditLogger Logger = SlogLogger{logger: slog.Default()} type Logger interface { Debug(msg string, err ...error) @@ -23,52 +14,6 @@ type Logger interface { Error(msg string, err ...error) } -type SlogLogger struct { - logger *slog.Logger -} - -func (s SlogLogger) Debug(msg string, err ...error) { - s.logger.Debug(msg, s.getWrappedError(err)) -} - -func (s SlogLogger) Info(msg string, err ...error) { - s.logger.Info(msg, s.getWrappedError(err)) -} - -func (s SlogLogger) Warn(msg string, err ...error) { - s.logger.Warn(msg, s.getWrappedError(err)) -} - -func (s SlogLogger) Error(msg string, err ...error) { - s.logger.Error(msg, s.getWrappedError(err)) -} - -func (s SlogLogger) getWrappedError(err []error) slog.Attr { - var wrappedErr slog.Attr - if err != nil { - wrappedErr = slog.Any("error", wrapErr(err)) - } - return wrappedErr -} - -type ZeroLogLogger struct{} - -func (l ZeroLogLogger) Debug(msg string, err ...error) { - log.Debug().Err(wrapErr(err)).Msg(msg) -} - -func (l ZeroLogLogger) Info(msg string, err ...error) { - log.Info().Err(wrapErr(err)).Msg(msg) -} - -func (l ZeroLogLogger) Warn(msg string, err ...error) { - log.Warn().Err(wrapErr(err)).Msg(msg) -} - -func (l ZeroLogLogger) Error(msg string, err ...error) { - log.Error().Err(wrapErr(err)).Msg(msg) -} - func wrapErr(err []error) error { var e error if len(err) == 0 { diff --git a/log/log_test.go b/log/log_test.go index 1e1ab7f..e7f0d3e 100644 --- a/log/log_test.go +++ b/log/log_test.go @@ -2,7 +2,6 @@ package log import ( "errors" - "log/slog" "testing" ) @@ -39,75 +38,3 @@ func Test_DefaultLogger(t *testing.T) { AuditLogger.Error("error message", errors.New("custom error")) }) } - -func Test_SlogLogger(t *testing.T) { - AuditLogger = NewSlogAuditLogger(slog.Default()) - - t.Run("debug", func(t *testing.T) { - AuditLogger.Debug("debug message") - }) - - t.Run("debug with error details", func(t *testing.T) { - AuditLogger.Debug("debug message", errors.New("custom error")) - }) - - t.Run("info", func(t *testing.T) { - AuditLogger.Info("info message") - }) - - t.Run("info with error details", func(t *testing.T) { - AuditLogger.Info("info message", errors.New("custom error")) - }) - - t.Run("warn", func(t *testing.T) { - AuditLogger.Warn("warn message") - }) - - t.Run("warn with error details", func(t *testing.T) { - AuditLogger.Warn("warn message", errors.New("custom error")) - }) - - t.Run("error", func(t *testing.T) { - AuditLogger.Error("error message") - }) - - t.Run("error with error details", func(t *testing.T) { - AuditLogger.Error("error message", errors.New("custom error")) - }) -} - -func Test_ZerologLogger(t *testing.T) { - AuditLogger = NewZerologAuditLogger() - - t.Run("debug", func(t *testing.T) { - AuditLogger.Debug("debug message") - }) - - t.Run("debug with error details", func(t *testing.T) { - AuditLogger.Debug("debug message", errors.New("custom error")) - }) - - t.Run("info", func(t *testing.T) { - AuditLogger.Info("info message") - }) - - t.Run("info with error details", func(t *testing.T) { - AuditLogger.Info("info message", errors.New("custom error")) - }) - - t.Run("warn", func(t *testing.T) { - AuditLogger.Warn("warn message") - }) - - t.Run("warn with error details", func(t *testing.T) { - AuditLogger.Warn("warn message", errors.New("custom error")) - }) - - t.Run("error", func(t *testing.T) { - AuditLogger.Error("error message") - }) - - t.Run("error with error details", func(t *testing.T) { - AuditLogger.Error("error message", errors.New("custom error")) - }) -} diff --git a/log/slog.go b/log/slog.go new file mode 100644 index 0000000..882456a --- /dev/null +++ b/log/slog.go @@ -0,0 +1,35 @@ +package log + +import "log/slog" + +type SlogLogger struct { + logger *slog.Logger +} + +func UseSlogAuditLogger(logger *slog.Logger) { + AuditLogger = SlogLogger{logger: logger} +} + +func (s SlogLogger) Debug(msg string, err ...error) { + s.logger.Debug(msg, s.getWrappedError(err)) +} + +func (s SlogLogger) Info(msg string, err ...error) { + s.logger.Info(msg, s.getWrappedError(err)) +} + +func (s SlogLogger) Warn(msg string, err ...error) { + s.logger.Warn(msg, s.getWrappedError(err)) +} + +func (s SlogLogger) Error(msg string, err ...error) { + s.logger.Error(msg, s.getWrappedError(err)) +} + +func (s SlogLogger) getWrappedError(err []error) slog.Attr { + var wrappedErr slog.Attr + if err != nil { + wrappedErr = slog.Any("error", wrapErr(err)) + } + return wrappedErr +} diff --git a/log/slog_test.go b/log/slog_test.go new file mode 100644 index 0000000..122bc80 --- /dev/null +++ b/log/slog_test.go @@ -0,0 +1,43 @@ +package log + +import ( + "errors" + "log/slog" + "testing" +) + +func Test_SlogLogger(t *testing.T) { + UseSlogAuditLogger(slog.Default()) + + t.Run("debug", func(t *testing.T) { + AuditLogger.Debug("debug message") + }) + + t.Run("debug with error details", func(t *testing.T) { + AuditLogger.Debug("debug message", errors.New("custom error")) + }) + + t.Run("info", func(t *testing.T) { + AuditLogger.Info("info message") + }) + + t.Run("info with error details", func(t *testing.T) { + AuditLogger.Info("info message", errors.New("custom error")) + }) + + t.Run("warn", func(t *testing.T) { + AuditLogger.Warn("warn message") + }) + + t.Run("warn with error details", func(t *testing.T) { + AuditLogger.Warn("warn message", errors.New("custom error")) + }) + + t.Run("error", func(t *testing.T) { + AuditLogger.Error("error message") + }) + + t.Run("error with error details", func(t *testing.T) { + AuditLogger.Error("error message", errors.New("custom error")) + }) +} diff --git a/log/zerolog.go b/log/zerolog.go new file mode 100644 index 0000000..ea4a634 --- /dev/null +++ b/log/zerolog.go @@ -0,0 +1,25 @@ +package log + +import "github.com/rs/zerolog/log" + +type ZeroLogLogger struct{} + +func UseZerologAuditLogger() { + AuditLogger = ZeroLogLogger{} +} + +func (l ZeroLogLogger) Debug(msg string, err ...error) { + log.Debug().Err(wrapErr(err)).Msg(msg) +} + +func (l ZeroLogLogger) Info(msg string, err ...error) { + log.Info().Err(wrapErr(err)).Msg(msg) +} + +func (l ZeroLogLogger) Warn(msg string, err ...error) { + log.Warn().Err(wrapErr(err)).Msg(msg) +} + +func (l ZeroLogLogger) Error(msg string, err ...error) { + log.Error().Err(wrapErr(err)).Msg(msg) +} diff --git a/log/zerolog_test.go b/log/zerolog_test.go new file mode 100644 index 0000000..3f07d42 --- /dev/null +++ b/log/zerolog_test.go @@ -0,0 +1,42 @@ +package log + +import ( + "errors" + "testing" +) + +func Test_ZerologLogger(t *testing.T) { + UseZerologAuditLogger() + + t.Run("debug", func(t *testing.T) { + AuditLogger.Debug("debug message") + }) + + t.Run("debug with error details", func(t *testing.T) { + AuditLogger.Debug("debug message", errors.New("custom error")) + }) + + t.Run("info", func(t *testing.T) { + AuditLogger.Info("info message") + }) + + t.Run("info with error details", func(t *testing.T) { + AuditLogger.Info("info message", errors.New("custom error")) + }) + + t.Run("warn", func(t *testing.T) { + AuditLogger.Warn("warn message") + }) + + t.Run("warn with error details", func(t *testing.T) { + AuditLogger.Warn("warn message", errors.New("custom error")) + }) + + t.Run("error", func(t *testing.T) { + AuditLogger.Error("error message") + }) + + t.Run("error with error details", func(t *testing.T) { + AuditLogger.Error("error message", errors.New("custom error")) + }) +}