Files
fm_be/internal/shared/pkg/logger/logger.go
2026-07-16 22:16:45 +07:00

42 lines
815 B
Go

package logger
import (
"io"
"log/slog"
"os"
"strings"
"wucher/internal/config"
)
func New(cfg config.LoggingConfig) *slog.Logger {
level := parseLevel(cfg.Level)
options := &slog.HandlerOptions{Level: level}
var handler slog.Handler
switch strings.ToLower(strings.TrimSpace(cfg.Format)) {
case "text":
handler = slog.NewTextHandler(os.Stdout, options)
default:
handler = slog.NewJSONHandler(os.Stdout, options)
}
return slog.New(handler)
}
func NewDiscard() *slog.Logger {
return slog.New(slog.NewJSONHandler(io.Discard, nil))
}
func parseLevel(raw string) slog.Leveler {
switch strings.ToLower(strings.TrimSpace(raw)) {
case "debug":
return slog.LevelDebug
case "warn", "warning":
return slog.LevelWarn
case "error":
return slog.LevelError
default:
return slog.LevelInfo
}
}