Major refactor to library
This commit is contained in:
56
pkg/logging/logging.go
Normal file
56
pkg/logging/logging.go
Normal file
@@ -0,0 +1,56 @@
|
||||
package logging
|
||||
|
||||
import "log/slog"
|
||||
|
||||
// Logger interface allows users to plug in their own logger
|
||||
type Logger interface {
|
||||
Debug(msg string, args ...any)
|
||||
Info(msg string, args ...any)
|
||||
Warn(msg string, args ...any)
|
||||
Error(msg string, args ...any)
|
||||
}
|
||||
|
||||
var defaultLogger Logger = &slogLogger{logger: slog.Default()}
|
||||
|
||||
// SetLogger allows users to plug in their own logger
|
||||
func SetLogger(l Logger) {
|
||||
defaultLogger = l
|
||||
}
|
||||
|
||||
// Init initializes the default slog logger with a specific log level
|
||||
func Init(level string) {
|
||||
var slogLevel slog.Level
|
||||
switch level {
|
||||
case "debug":
|
||||
slogLevel = slog.LevelDebug
|
||||
case "info":
|
||||
slogLevel = slog.LevelInfo
|
||||
case "warn":
|
||||
slogLevel = slog.LevelWarn
|
||||
case "error":
|
||||
slogLevel = slog.LevelError
|
||||
default:
|
||||
slogLevel = slog.LevelInfo
|
||||
}
|
||||
|
||||
handler := slog.NewTextHandler(nil, &slog.HandlerOptions{
|
||||
Level: slogLevel,
|
||||
})
|
||||
defaultLogger = &slogLogger{logger: slog.New(handler)}
|
||||
}
|
||||
|
||||
// Default slog implementation
|
||||
type slogLogger struct {
|
||||
logger *slog.Logger
|
||||
}
|
||||
|
||||
func (s *slogLogger) Debug(msg string, args ...any) { s.logger.Debug(msg, args...) }
|
||||
func (s *slogLogger) Info(msg string, args ...any) { s.logger.Info(msg, args...) }
|
||||
func (s *slogLogger) Warn(msg string, args ...any) { s.logger.Warn(msg, args...) }
|
||||
func (s *slogLogger) Error(msg string, args ...any) { s.logger.Error(msg, args...) }
|
||||
|
||||
// Package-level functions for convenience
|
||||
func Debug(msg string, args ...any) { defaultLogger.Debug(msg, args...) }
|
||||
func Info(msg string, args ...any) { defaultLogger.Info(msg, args...) }
|
||||
func Warn(msg string, args ...any) { defaultLogger.Warn(msg, args...) }
|
||||
func Error(msg string, args ...any) { defaultLogger.Error(msg, args...) }
|
||||
Reference in New Issue
Block a user