更新时间:

#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这个库来实现监听文件修改的功能。