Go语言的配置管理器viper
安装
go get github.com/spf13/viper
Viper需要最少知道在哪里查找配置文件的配置。Viper支持JSON、TOML、YAML、HCL、envfile和Java properties格式的配置文件。Viper可以搜索多个路径,但目前单个Viper实例只支持单个配置文件。Viper不默认任何配置搜索路径,将默认决策留给应用程序。
代码示例
package main //viper 的使用 import ( "fmt" "github.com/spf13/viper" ) var config = flag.String("config","./config.yml","指定配置文件")
func main() { flag.Parse() v := viper.New() v.SetConfigName(*config) v.AddConfigPath(".") v.AddConfigPath("./") v.SetConfigType("yaml")
if err := v.ReadInConfig();err !=nil{ return } v1 := v.Sub("input") fmt.Println(v1.Get("nsq")) }
监控并重新读取配置文件
viper.WatchConfig() viper.OnConfigChange(func(e fsnotify.Event) { // 配置文件发生变更之后会调用的回调函数 fmt.Println("Config file changed:", e.Name) })