package customlogger import ( "log/slog" "os" ) var LogLevels = map[string]slog.Level{ "debug": slog.LevelDebug, "info": slog.LevelInfo, "warn": slog.LevelWarn, "error": slog.LevelError, } var Environment = map[string]string{ "dev": "development", "prod": "production", } func NewLogger(env string, lvl slog.Level) *slog.Logger { var logHandler slog.Handler err := os.MkdirAll("logs", os.ModePerm) if err != nil { panic("Failed to create log directory: " + err.Error()) } file, err := os.OpenFile("logs/app.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666) if err != nil { panic("Failed to open log file: " + err.Error()) } switch env { case "development": logHandler = slog.NewTextHandler(file, &slog.HandlerOptions{ Level: lvl, }) default: logHandler = slog.NewJSONHandler(file, &slog.HandlerOptions{ Level: lvl, }) } logger := slog.New(logHandler).With(slog.Group( "service_info", slog.String("env", env), ), ) return logger }