简介
econfig 是 ee-go 的配置管理模块,负责加载和提供应用配置数据。支持分层配置加载(开发环境读取本地文件,生产环境读取嵌入或外部文件),自动将环境配置合并到默认配置中,底层使用 Viper 作为配置容器。所有配置值以 map[string]any 存储和访问。
导入
import "github.com/wallace5303/ee-go/econfig"API
Init()
说明:初始化配置系统,加载默认和环境配置并合并。加载策略:开发模式下优先从项目目录读取 config.default.json 和 config.local.json;生产模式下优先从嵌入静态文件系统读取 config.default.json 和 config.prod.json,嵌入文件不存在时回退到外部文件。如果配置文件不存在,则抛出异常并退出。合并后的配置存储在 Vip 全局变量中。此函数由 eboot.New() 内部调用,用户通常不需要手动调用。
参数:无
返回值:无
示例:
// 通常由 eboot.New() 自动调用
econfig.Init()参见:Vip
Get(key)
说明:通过键名获取配置值。键名不区分大小写(Viper 功能)。如果键不存在,返回 nil。
参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| key | string | 是 | 配置键名,不区分大小写 |
返回值:any — 键对应的配置值,键不存在时返回 nil
示例:
port := econfig.Get("http.port")
enable := econfig.Get("http.enable")
fmt.Printf("HTTP 端口: %v, 启用: %v\n", port, enable)GetAll()
说明:返回包含所有配置项的完整 map。
参数:无
返回值:map[string]any — 包含所有配置键值对的 map
示例:
allCfg := econfig.GetAll()
for k, v := range allCfg {
fmt.Printf("%s = %v\n", k, v)
}GetLogger()
说明:获取业务日志配置项。对应配置文件中的 logger 键。如果配置项不存在或类型不匹配,则抛出异常并退出。
参数:无
返回值:map[string]any — 日志配置 map,包含日志级别、输出路径等设置
示例:
logCfg := econfig.GetLogger()
logLevel := logCfg["level"]
logDir := logCfg["dir"]参见:GetCoreLogger()
GetCoreLogger()
说明:获取核心日志配置项。对应配置文件中的 core_logger 键。核心日志用于记录框架内部日志,与业务日志分离。如果配置项不存在或类型不匹配,则抛出异常并退出。
参数:无
返回值:map[string]any — 核心日志配置 map
示例:
coreLogCfg := econfig.GetCoreLogger()
coreLevel := coreLogCfg["level"]参见:GetLogger()
GetHttp()
说明:获取 HTTP 服务配置项。对应配置文件中的 http 键,包含端口、启用状态、SSL 等设置。如果配置项不存在或类型不匹配,则抛出异常并退出。
参数:无
返回值:map[string]any — HTTP 配置 map,典型字段包括 enable、port、ssl 等
示例:
httpCfg := econfig.GetHttp()
if httpCfg["enable"] == true {
port := httpCfg["port"]
fmt.Printf("HTTP 服务端口: %v\n", port)
}GetStatic()
说明:获取静态资源配置项。对应配置文件中的 static 键,控制是否启用嵌入静态文件系统。如果配置项不存在或类型不匹配,则抛出异常并退出。
参数:无
返回值:map[string]any — 静态资源配置 map,典型字段包括 enable 等
示例:
staticCfg := econfig.GetStatic()
if staticCfg["enable"] == true {
// 使用嵌入文件系统读取资源
} else {
// 使用外部文件路径读取资源
}Vip
说明:全局 Viper 配置实例,在 Init() 完成后可用。提供完整的 Viper API 功能(如 Set、IsSet、Sub 等),可用于高级配置操作。
类型:*viper.Viper
示例:
// 检查键是否存在
if econfig.Vip.IsSet("custom.key") {
val := econfig.Vip.Get("custom.key")
}
// 动态设置配置值
econfig.Vip.Set("app.name", "my-app")