logrotate.go 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. package cron
  2. import (
  3. "time"
  4. "github.com/0xJacky/Nginx-UI/internal/logrotate"
  5. "github.com/0xJacky/Nginx-UI/settings"
  6. "github.com/go-co-op/gocron/v2"
  7. "github.com/uozi-tech/cosy/logger"
  8. )
  9. // logrotate job instance
  10. var logrotateJobInstance gocron.Job
  11. // setupLogrotateJob initializes and starts the logrotate job
  12. func setupLogrotateJob(scheduler gocron.Scheduler) {
  13. if !settings.LogrotateSettings.Enabled {
  14. return
  15. }
  16. var err error
  17. logrotateJobInstance, err = scheduler.NewJob(
  18. gocron.DurationJob(time.Duration(settings.LogrotateSettings.Interval)*time.Minute),
  19. gocron.NewTask(logrotate.Exec),
  20. gocron.WithSingletonMode(gocron.LimitModeWait))
  21. if err != nil {
  22. logger.Fatalf("LogRotate Job: Err: %v\n", err)
  23. }
  24. }
  25. // restartLogrotateJob stops and restarts the logrotate job
  26. func restartLogrotateJob(scheduler gocron.Scheduler) {
  27. logger.Debug("Restart Logrotate")
  28. if logrotateJobInstance != nil {
  29. err := scheduler.RemoveJob(logrotateJobInstance.ID())
  30. if err != nil {
  31. logger.Error(err)
  32. return
  33. }
  34. }
  35. setupLogrotateJob(scheduler)
  36. }