初始化
配置初始化
ConfigInit 从 .env 文件加载环境变量
配置初始化
ConfigInit 方法从 .env 文件加载环境变量到系统环境中。
ConfigInit
func (r *Reg) ConfigInit()实现:
func (r *Reg) ConfigInit() {
// 加载 .env 文件到环境变量(忽略不存在的错误)
_ = godotenv.Load()
}配置文件
在项目根目录创建 .env 文件:
# 调试模式
XLF_DEBUG=true
# 雪花算法配置
SNOWFLAKE_DATACENTER_ID=1
SNOWFLAKE_NODE_ID=1
# 服务配置
XLF_PORT=8080读取配置
使用 xEnv 包读取环境变量:
import xEnv "github.com/bamboo-services/bamboo-base-go/defined/env"
// 读取布尔值
debug := xEnv.GetEnvBool(xEnv.Debug, false)
// 读取字符串
port := xEnv.GetEnvString("SERVER_PORT", "8080")
// 读取整数
nodeID := xEnv.GetEnvInt("SNOWFLAKE_NODE_ID", 1)预定义环境变量
系统配置
| 变量名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
XLF_DEBUG | bool | false | 调试模式开关 |
XLF_HOST | string | localhost | HTTP 监听地址 |
XLF_PORT | int | 1118 | HTTP 监听端口 |
GRPC_PORT | int | 1119 | gRPC 监听端口 |
GRPC_REFLECTION | bool | false | gRPC 反射开关 |
数据库配置
| 变量名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
DATABASE_HOST | string | localhost | 数据库主机 |
DATABASE_PORT | int | 5432 | 数据库端口 |
DATABASE_USER | string | - | 数据库用户名 |
DATABASE_PASS | string | - | 数据库密码 |
DATABASE_NAME | string | - | 数据库名称 |
DATABASE_CHARSET | string | utf8mb4 | 字符集 |
DATABASE_TIMEZONE | string | Asia/Shanghai | 时区 |
DATABASE_PREFIX | string | - | 表前缀 |
Redis 配置
| 变量名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
NOSQL_HOST | string | localhost | Redis 主机 |
NOSQL_PORT | int | 6379 | Redis 端口 |
NOSQL_PASS | string | - | Redis 密码 |
NOSQL_DATABASE | int | 0 | Redis 数据库索引 |
NOSQL_POOL_SIZE | int | 10 | 连接池大小 |
NOSQL_PREFIX | string | - | 键前缀 |
雪花算法配置
| 变量名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
SNOWFLAKE_DATACENTER_ID | int | 自动生成 | 数据中心 ID (0-31) |
SNOWFLAKE_NODE_ID | int | 自动生成 | 节点 ID (0-31) |
日志配置
| 变量名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
LOG_LEVEL | string | info | 日志级别 |
LOG_PATH | string | ./logs | 日志目录 |
LOG_MAX_SIZE | int | 100 | 单文件最大尺寸 (MB) |
LOG_MAX_AGE | int | 30 | 文件保留天数 |
LOG_MAX_BACKUPS | int | 10 | 最大备份文件数 |
LOG_COMPRESS | bool | true | 是否压缩归档 |
运行环境配置
| 变量名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
ENV | string | development | 运行环境 |
APP_NAME | string | - | 应用名称 |
APP_VERSION | string | - | 应用版本 |
TIMEZONE | string | Asia/Shanghai | 系统时区 |
注意事项
.env文件不存在时不会报错,会静默忽略- 环境变量优先级:系统环境变量 >
.env文件 - 建议将
.env添加到.gitignore,避免敏感信息泄露