package logging import ( "log/slog" "os" "strings" ) var logger *slog.Logger // Init initializes the logger with the specified log level func Init(level string) { var logLevel slog.Level switch strings.ToLower(level) { case "debug": logLevel = slog.LevelDebug case "info": logLevel = slog.LevelInfo case "warn", "warning": logLevel = slog.LevelWarn case "error": logLevel = slog.LevelError default: logLevel = slog.LevelInfo } opts := &slog.HandlerOptions{ Level: logLevel, } handler := slog.NewJSONHandler(os.Stdout, opts) logger = slog.New(handler) slog.SetDefault(logger) } // Debug logs a debug message func Debug(msg string, args ...any) { if logger != nil { logger.Debug(msg, args...) } } // Info logs an info message func Info(msg string, args ...any) { if logger != nil { logger.Info(msg, args...) } } // Warn logs a warning message func Warn(msg string, args ...any) { if logger != nil { logger.Warn(msg, args...) } } // Error logs an error message func Error(msg string, args ...any) { if logger != nil { logger.Error(msg, args...) } } // With returns a new logger with additional attributes func With(args ...any) *slog.Logger { if logger != nil { return logger.With(args...) } return slog.Default() }