初始化
配置初始化
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_DRIVER | string | none | 数据库驱动(mysql / postgres / sqlite / oracle / sqlserver / none),v1.2.0 起需配合导入对应驱动插件 |
DATABASE_DSN | string | - | 数据库完整连接串(设置后忽略下方分项配置) |
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 | - | 表前缀 |
DATABASE_PATH | string | - | SQLite 数据库文件路径(仅 sqlite 驱动有效) |
DATABASE_SERVICE_NAME | string | - | Oracle 服务名(仅 oracle 驱动有效) |
DATABASE_LIB_DIR | string | - | Oracle Instant Client 目录(macOS/Windows 有效,Linux 用 ldconfig 配置) |
v1.2.0 起:
DATABASE_DRIVER不再由框架内置驱动实现,业务端需安装并空白导入对应驱动插件(如_ "…/plugins/database/mysql"),否则启动阶段报「不支持的数据库驱动」。详见 声明式配置。
Redis 配置
| 变量名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
NOSQL_DRIVER | string | none | 缓存后端(redis / memory / none) |
NOSQL_HOST | string | localhost | Redis 主机 |
NOSQL_PORT | int | 6379 | Redis 端口 |
NOSQL_USER | string | - | Redis 用户名(ACL 模式) |
NOSQL_PASS | string | - | Redis 密码 |
NOSQL_DATABASE | int | 0 | Redis 数据库索引 |
NOSQL_POOL_SIZE | int | 10 | 连接池大小 |
NOSQL_PREFIX | string | - | 键前缀 |
NOSQL_MEMORY_DEFAULT_TTL | string | 0 | memory 后端默认过期时间(Go Duration,如 30m/1h,0=永不过期) |
NOSQL_MEMORY_MAX_ENTRIES | int | 0 | memory 后端最大条目数(0=无上限) |
NOSQL_MEMORY_SHARD_COUNT | int | 0 | memory 后端分片数(0=默认分片) |
雪花算法配置
| 变量名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
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,避免敏感信息泄露