【Go常用库】viper 配置管理

01. viper 介绍

参考博客

1.1 viper 是什么?

  • Viper是适用于Go应用程序的完整配置解决方案。
  • 它被设计用于在应用程序中工作,并且可以处理所有类型的配置需求和格式
  • viper功能
    • 设置默认值
    • JSONTOMLYAMLHCLenvfileJava 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支持JSONTOMLYAMLHCLenvfileJava 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(
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

百川Cs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值