更新时间:
#golang viper库
viper 是一个配置解决方案,拥有丰富的特性:
支持 JSON/TOML/YAML/HCL/envfile/Java properties 等多种格式的配置文件;
- 可以设置监听配置文件的修改,修改时自动加载新的配置;
- 从环境变量、命令行选项和io.Reader中读取配置;
- 从远程配置系统中读取和监听修改,如 etcd/Consul;
- 代码逻辑中显示设置键值。
https://darjun.github.io/2020/01/18/godailylib/viper/
var (
v *viper.Viper
configFile = flag.String("f", "xxx.yml", "set config file which viper will loading.")
)
func init() {
flag.Parse()
x, err := config.New(*configFile) // viper.new() addconfigpath
if err != nil {
panic("failed to load config file: " + err.Error())
}
v = x
}
func Get() *viper.Viper {
return v
}
#监听文件修改
只需要调用viper.WatchConfig,viper 会自动监听配置修改。如果有修改,重新加载的配置。
viper 使用fsnotify这个库来实现监听文件修改的功能。