Mix VarWatch - Go 监视配置变量数据的变化并执行一些任务

Posted 撸代码的乡下人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mix VarWatch - Go 监视配置变量数据的变化并执行一些任务相关的知识,希望对你有一定的参考价值。

OpenMix 出品:https://openmix.org

Mix VarWatch

监视配置结构体变量的数据变化并执行一些任务

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

源码地址

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

  • http://github.com/mix-go/varwatch

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/

以上是关于Mix VarWatch - Go 监视配置变量数据的变化并执行一些任务的主要内容,如果未能解决你的问题,请参考以下文章

golang模块viper读取配置文件

如何监视tomcat5.23已经使用的线程数

Laravel Mix,如何在混合时传递变量?

go环境变量配置 (GOROOT和GOPATH)

FileWatcher

c#中,调试的时候,下面怎么不显示局部变量和监视窗口?