package env import ( "log/slog" "os" "strconv" "github.com/gofiber/fiber/v2/log" "github.com/joho/godotenv" ) // region app var ( AppName = "platform" AppPort = "8080" ) func loadApp() { _AppName := os.Getenv("APP_NAME") if _AppName != "" { AppName = _AppName } _AppPort := os.Getenv("APP_PORT") if _AppPort != "" { AppPort = _AppPort } } // endregion // region db var ( DbHost = "localhost" DbPort = "5432" DbName string DbUserName string DbPassword string ) func loadDb() { _DbHost := os.Getenv("DB_HOST") if _DbHost != "" { DbHost = _DbHost } _DbPort := os.Getenv("DB_PORT") if _DbPort != "" { DbPort = _DbPort } _DbName := os.Getenv("DB_NAME") if _DbName != "" { DbName = _DbName } else { panic("环境变量 DB_NAME 的值为空") } _DbUserName := os.Getenv("DB_USERNAME") if _DbUserName != "" { DbUserName = _DbUserName } else { panic("环境变量 DB_USERNAME 的值为空") } _DbPassword := os.Getenv("DB_PASSWORD") if _DbPassword != "" { DbPassword = _DbPassword } else { panic("环境变量 DB_PASSWORD 的值为空") } } // endregion // region redis var ( RedisHost = "localhost" RedisPort = "6379" RedisDb = 0 RedisPass = "" ) func loadRedis() { _RedisHost := os.Getenv("REDIS_HOST") if _RedisHost != "" { RedisHost = _RedisHost } _RedisPort := os.Getenv("REDIS_PORT") if _RedisPort != "" { RedisPort = _RedisPort } _RedisDb := os.Getenv("REDIS_DB") if _RedisDb != "" { atoi, err := strconv.Atoi(_RedisDb) if err != nil { panic("环境变量 REDIS_DB 的值不是数字") } RedisDb = atoi } _RedisPass := os.Getenv("REDIS_PASS") if _RedisPass != "" { RedisPass = _RedisPass } } // endregion // region log var ( LogLevel = slog.LevelDebug ) func loadLog() { _LogLevel := os.Getenv("LOG_LEVEL") switch _LogLevel { case "debug": LogLevel = slog.LevelDebug case "info": LogLevel = slog.LevelInfo case "warn": LogLevel = slog.LevelWarn case "error": LogLevel = slog.LevelError } } // endregion func Init() { err := godotenv.Load() if err != nil { log.Debug("❓ 没有本地环境变量") } else { log.Debug("✔ 加载本地环境变量") } loadApp() loadDb() loadRedis() loadLog() }