mirror of
https://dev.azure.com/schwarzit/schwarzit.stackit-public/_git/audit-go
synced 2026-02-18 13:42:01 +00:00
Split log implementations
This commit is contained in:
parent
a98e802f55
commit
3f222fc2be
6 changed files with 146 additions and 129 deletions
57
log/log.go
57
log/log.go
|
|
@ -4,17 +4,8 @@ import (
|
||||||
"errors"
|
"errors"
|
||||||
"log/slog"
|
"log/slog"
|
||||||
)
|
)
|
||||||
import "github.com/rs/zerolog/log"
|
|
||||||
|
|
||||||
var AuditLogger = NewSlogAuditLogger(slog.Default())
|
var AuditLogger Logger = SlogLogger{logger: slog.Default()}
|
||||||
|
|
||||||
func NewSlogAuditLogger(logger *slog.Logger) Logger {
|
|
||||||
return SlogLogger{logger: logger}
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewZerologAuditLogger() Logger {
|
|
||||||
return ZeroLogLogger{}
|
|
||||||
}
|
|
||||||
|
|
||||||
type Logger interface {
|
type Logger interface {
|
||||||
Debug(msg string, err ...error)
|
Debug(msg string, err ...error)
|
||||||
|
|
@ -23,52 +14,6 @@ type Logger interface {
|
||||||
Error(msg string, err ...error)
|
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 {
|
func wrapErr(err []error) error {
|
||||||
var e error
|
var e error
|
||||||
if len(err) == 0 {
|
if len(err) == 0 {
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@ package log
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"log/slog"
|
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -39,75 +38,3 @@ func Test_DefaultLogger(t *testing.T) {
|
||||||
AuditLogger.Error("error message", errors.New("custom error"))
|
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"))
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
|
||||||
35
log/slog.go
Normal file
35
log/slog.go
Normal file
|
|
@ -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
|
||||||
|
}
|
||||||
43
log/slog_test.go
Normal file
43
log/slog_test.go
Normal file
|
|
@ -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"))
|
||||||
|
})
|
||||||
|
}
|
||||||
25
log/zerolog.go
Normal file
25
log/zerolog.go
Normal file
|
|
@ -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)
|
||||||
|
}
|
||||||
42
log/zerolog_test.go
Normal file
42
log/zerolog_test.go
Normal file
|
|
@ -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"))
|
||||||
|
})
|
||||||
|
}
|
||||||
Loading…
Reference in a new issue