71 lines
1.2 KiB
Go
71 lines
1.2 KiB
Go
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()
|
|
}
|