gcfg
组件采用接口化设计,默认提供的是基于文件系统的接口实现。支持的数据文件格式包括: JSON/XML/YAML(YML)/TOML/INI/PROPERTIES
,项目中开发者可以灵活地选择自己熟悉的配置文件格式来进行配置管理。
配置文件
默认配置文件
配置对象我们推荐使用单例方式获取,单例对象将会按照文件后缀 toml/yaml/yml/json/ini/xml/properties
文自动检索配置文件。默认情况下会自动检索配置文件 config.toml/yaml/yml/json/ini/xml/properties
并缓存,配置文件在外部被修改时将会自动刷新缓存。
如果想要自定义文件格式,可以通过 SetFileName
方法修改默认读取的配置文件名称(如: default.yaml
, default.json
, default.xml
等等)。例如, 我们可以通过以下方式读取 default.yaml
配置文件中的数据库 database
配置项。
// 设置默认配置文件,默认读取的配置文件设置为 default.yaml
g.Cfg().GetAdapter().(*gcfg.AdapterFile).SetFileName("default.yaml")
// 后续读取时将会读取到 default.yaml 配置文件内容
g.Cfg().Get(ctx, "database")
默认文件修改
文件可以是一 个具体的文件名称或者完整的文件绝对路径。
我们可以通过多种方式修改默认文件名称:
- 通过配置管理方法
SetFileName
修改。 - 修改命令行启动参数 -
gf.gcfg.file
。 - 修改指定的环境变量 -
GF_GCFG_FILE
。
假如我们的执行程序文件为 main
,那么可以通过以下方式修改配置管理器的配置文件目录( Linux
下):
- 通过单例模式
g.Cfg().GetAdapter().(*gcfg.AdapterFile).SetFileName("default.yaml")
- 通过命令行启动参数
./main --gf.gcfg.file=config.prod.toml
- 通过环境变量(常用在容器中)
-
启动时修改环境变量:
GF_GCFG_FILE=config.prod.toml; ./main
-
使用
genv
模块来修改环境变量:genv.Set("GF_GCFG_FILE", "config.prod.toml")
-
配置目录
目录配置方法
gcfg
配置管理器支持非常灵活的多目录自动搜索功能,通过 SetPath
可以修改目录管理目录为 唯一 的目录地址,同时,我们推荐通过 AddPath
方法添加多个搜索目录,配置管理器底层将会按照添加目录的顺序作为优先级进行自动检索。直到检索到一个匹配的文件路径为止,如果在所有搜索目录下查找不到配置文件,那么会返回失败。