serve_unix.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. //go:build linux || dragonfly || freebsd || netbsd || openbsd
  2. package cmd
  3. import (
  4. "os"
  5. "os/signal"
  6. "syscall"
  7. "github.com/urfave/cli/v2/altsrc"
  8. "heckel.io/ntfy/v2/log"
  9. "heckel.io/ntfy/v2/server"
  10. )
  11. func sigHandlerConfigReload(config string) {
  12. sigs := make(chan os.Signal, 1)
  13. signal.Notify(sigs, syscall.SIGHUP)
  14. for range sigs {
  15. log.Info("Partially hot reloading configuration ...")
  16. inputSource, err := newYamlSourceFromFile(config, flagsServe)
  17. if err != nil {
  18. log.Warn("Hot reload failed: %s", err.Error())
  19. continue
  20. }
  21. if err := reloadLogLevel(inputSource); err != nil {
  22. log.Warn("Reloading log level failed: %s", err.Error())
  23. }
  24. }
  25. }
  26. func reloadLogLevel(inputSource altsrc.InputSourceContext) error {
  27. newLevelStr, err := inputSource.String("log-level")
  28. if err != nil {
  29. return err
  30. }
  31. overrides, err := inputSource.StringSlice("log-level-overrides")
  32. if err != nil {
  33. return err
  34. }
  35. log.ResetLevelOverrides()
  36. if err := applyLogLevelOverrides(overrides); err != nil {
  37. return err
  38. }
  39. log.SetLevel(log.ToLevel(newLevelStr))
  40. if len(overrides) > 0 {
  41. log.Info("Log level is %v, %d override(s) in place", newLevelStr, len(overrides))
  42. } else {
  43. log.Info("Log level is %v", newLevelStr)
  44. }
  45. return nil
  46. }
  47. func maybeRunAsService(conf *server.Config) (bool, error) {
  48. return false, nil
  49. }