Skip to content

Instantly share code, notes, and snippets.

@madflojo
Created May 16, 2021 19:28
Show Gist options
  • Save madflojo/f0309685693cf63b9a1f902b0c82fd0a to your computer and use it in GitHub Desktop.
Save madflojo/f0309685693cf63b9a1f902b0c82fd0a to your computer and use it in GitHub Desktop.
Viper Article - Watch Viper config
// Setup Scheduler
scheduler = tasks.New()
defer scheduler.Stop()
// Config Reload
if cfg.GetInt("config_watch_interval") > 0 {
_, err := scheduler.Add(&tasks.Task{
Interval: time.Duration(cfg.GetInt("config_watch_interval")) * time.Second,
TaskFunc: func() error {
// Reload config using Viper's Watch capabilities
err := cfg.WatchRemoteConfig()
if err != nil {
return err
}
// Support hot enable/disable of debug logging
if cfg.GetBool("debug") {
log.Level = logrus.DebugLevel
}
// Support hot enable/disable of trace logging
if cfg.GetBool("trace") {
log.Level = logrus.TraceLevel
}
// Support hot enable/disable of all logging
if cfg.GetBool("disable_logging") {
log.Level = logrus.FatalLevel
}
log.Tracef("Config reloaded from Consul")
return nil
},
})
if err != nil {
log.Errorf("Error scheduling Config watcher - %s", err)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment