in internal/pkg/config/config.go [60:89]
func (c *Config) Watch(ctx context.Context, filename string) {
f := file.Provider(filename)
f.Watch(func(event interface{}, err error) {
if err != nil {
log.Printf("watch error: %v", err)
return
}
// Throw away the old config and load a fresh copy.
log.Println("config changed. Reloading ...")
new_k := koanf.New(".")
if err := new_k.Load(f, toml.Parser()); err != nil {
log.Printf("error loading new config: %v", err)
return
}
// Update the config
c.koanf = new_k
// Update the logger configuration
var levelMap map[string]string
var slogHandlerConfig loggerfactory.SlogHandlerConfig
c.MustUnmarshal("logger.level.packages", &levelMap)
c.MustUnmarshal("logger.handler", &slogHandlerConfig)
cm := loggerfactory.GetConfigManager()
cm.SetLogLevelMap(&levelMap)
cm.SetSlogHandlerConfig(slogHandlerConfig)
})
}