OpenMix 出品:https://openmix.org

Mix VarWatch

监督配置构造体变量的数据变动并执行一些工作

Monitor the data changes of configuration structure variables and perform some tasks

源码地址

Star 一下不迷路,下次用的时候还能找到

  • https://github.com/mix-php/vega

Installation

go get github.com/mix-go/varwatch

Usage

当采纳 spf13/viper jinzhu/configor 这种绑定变量的配置库来动静更新配置信息

任何采纳 &Config 指针绑定数据的配置库都能够
var Config struct {    Logger struct {        Level int `json:"level"`    } `json:"logger" varwatch:"logger"`    Database struct {        User    string `json:"user"`        Pwd     string `json:"pwd"`        Db      string `json:"db"`        MaxOpen int    `json:"max_open"`        MaxIdle int    `json:"max_idle"`    } `json:"database" varwatch:"database"`}err := viper.Unmarshal(&Config)

以动静批改日志级别举例:当 Config.Logger.Level 发生变化时咱们须要执行一些代码批改日志的级别

  • 首先将 Logger 节点配置 varwatch:"logger" 标签信息
  • 而后采纳以下代码执行监听逻辑
w := varwatch.NewWatcher(&Config, 10 * time.Second)w.Watch("logger", func() {    // 获取变动后的值    lv := Config.Logger.Level    // 批改 logrus 的日志级别    logrus.SetLevel(logrus.Level(uint32(lv)))})

须要动静批改连接池信息,或者数据库账号密码都能够通过下面的范例实现。

License

Apache License Version 2.0, http://www.apache.org/licenses/