diff --git a/main.go b/main.go index 689fb89..7ddfa4e 100644 --- a/main.go +++ b/main.go @@ -906,6 +906,9 @@ func main() { killSignals := make(chan os.Signal, 1) signal.Notify(killSignals, syscall.SIGINT, syscall.SIGTERM) + reloadSignals := make(chan os.Signal, 1) + signal.Notify(reloadSignals, syscall.SIGUSR1) + flag.Parse() confStr, err := os.ReadFile(*configFlag) @@ -1062,7 +1065,29 @@ func main() { } } - <-killSignals +killLoop: + for { + select { + case <-killSignals: + break killLoop + case <-reloadSignals: + confStr, err := os.ReadFile(*configFlag) + if err != nil { + log.Fatalf("Unable to open config: %v", err) + } + + err = yaml.Unmarshal(confStr, &conf) + if err != nil { + log.Fatalf("Unable to parse config: %v", err) + } + + lvl, err := log.ParseLevel(conf.Logging.Level) + if err != nil { + log.Fatalf("Failure setting logging level: %v", err) + } + log.SetLevel(lvl) + } + } for _, s := range sockets { _ = s.Close()