123456789101112131415161718192021222324252627282930313233343536373839404142 |
- package cron
- import (
- "time"
- "github.com/0xJacky/Nginx-UI/internal/logrotate"
- "github.com/0xJacky/Nginx-UI/settings"
- "github.com/go-co-op/gocron/v2"
- "github.com/uozi-tech/cosy/logger"
- )
- // logrotate job instance
- var logrotateJobInstance gocron.Job
- // setupLogrotateJob initializes and starts the logrotate job
- func setupLogrotateJob(scheduler gocron.Scheduler) {
- if !settings.LogrotateSettings.Enabled {
- return
- }
- var err error
- logrotateJobInstance, err = scheduler.NewJob(
- gocron.DurationJob(time.Duration(settings.LogrotateSettings.Interval)*time.Minute),
- gocron.NewTask(logrotate.Exec),
- gocron.WithSingletonMode(gocron.LimitModeWait))
- if err != nil {
- logger.Fatalf("LogRotate Job: Err: %v\n", err)
- }
- }
- // restartLogrotateJob stops and restarts the logrotate job
- func restartLogrotateJob(scheduler gocron.Scheduler) {
- logger.Debug("Restart Logrotate")
- if logrotateJobInstance != nil {
- err := scheduler.RemoveJob(logrotateJobInstance.ID())
- if err != nil {
- logger.Error(err)
- return
- }
- }
- setupLogrotateJob(scheduler)
- }
|