01. viper 介绍
参考博客
1.1 viper 是什么?
- Viper是适用于Go应用程序的完整配置解决方案。
- 它被设计用于在应用程序中工作,并且可以处理所有类型的配置需求和格式
- viper功能
- 设置默认值
- 从
JSON、TOML、YAML、HCL、envfile和Java properties格式的配置文件读取配置信息
- 实时监控和重新读取配置文件(可选)
- 从环境变量中读取
- 从远程配置系统(etcd或Consul)读取并监控配置变化
- 从命令行参数读取配置
- 从buffer读取配置
- 显式配置值
1.2 viper install
go get github.com/spf13/viper
1.3 为什么选择Viper?
Viper会按照下面的优先,每个项目的优先级都高于它下面的项目
- 显示调用
Set设置值
- 命令行参数(flag)
- 环境变量
- 配置文件
- key/value存储
- 默认值
- 重要: 目前Viper配置的键(Key)是
大小写不敏感的
02.viper设置配置
2.1 建立默认值
- 一个好的配置系统应该支持默认值。
- 键不需要默认值,但如果没有通过配置文件、环境变量、远程配置或命令行标志(flag)设置键,则默认值非常有用。
- 例如:
viper.SetDefault("ContentDir", "content")
viper.SetDefault("LayoutDir", "layouts")
viper.SetDefault("Taxonomies", map[string]string{
"tag": "tags", "category": "categories"})
2.2 读取配置文件
- Viper需要最少知道在哪里查找配置文件的配置。
- Viper支持
JSON、TOML、YAML、HCL、envfile和Java properties格式的配置文件。
- Viper可以搜索多个路径,但目前单个Viper实例只支持单个配置文件。
viper.SetConfigFile("./config.yaml")
viper.SetConfigName("config")
viper.SetConfigType("yaml")
viper.AddConfigPath("/etc/appname/")
viper.AddConfigPath("$HOME/.appname")
viper.AddConfigPath(".")
err := viper.ReadInConfig()
if err != nil {
panic(fmt.Errorf("Fatal error config file: %s \n", err))
}
2.3 写入配置文件
- 从配置文件中读取配置文件是有用的,但是有时你想要存储在运行时所做的所有修改。
- 为此,可以使用下面一组命令,每个命令都有自己的用途
viper.WriteConfig(