1
0

clear_logs_job.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package job
  2. import (
  3. "os"
  4. "x-ui/logger"
  5. "x-ui/xray"
  6. )
  7. type ClearLogsJob struct{}
  8. func NewClearLogsJob() *ClearLogsJob {
  9. return new(ClearLogsJob)
  10. }
  11. // Here Run is an interface method of the Job interface
  12. func (j *ClearLogsJob) Run() {
  13. logFiles := []string{xray.GetIPLimitLogPath(), xray.GetIPLimitBannedLogPath(), xray.GetAccessPersistentLogPath()}
  14. logFilesPrev := []string{xray.GetIPLimitPrevLogPath(), xray.GetIPLimitBannedPrevLogPath(), xray.GetAccessPersistentPrevLogPath()}
  15. // clear old previous logs
  16. for i := 0; i < len(logFilesPrev); i++ {
  17. if err := os.Truncate(logFilesPrev[i], 0); err != nil {
  18. logger.Warning("clear logs job err:", err)
  19. }
  20. }
  21. // clear log files and copy to previous logs
  22. for i := 0; i < len(logFiles); i++ {
  23. // copy to previous logs
  24. logFilePrev, err := os.OpenFile(logFilesPrev[i], os.O_CREATE|os.O_APPEND|os.O_RDWR, 0644)
  25. if err != nil {
  26. logger.Warning("clear logs job err:", err)
  27. }
  28. logFile, err := os.ReadFile(logFiles[i])
  29. if err != nil {
  30. logger.Warning("clear logs job err:", err)
  31. }
  32. _, err = logFilePrev.Write(logFile)
  33. if err != nil {
  34. logger.Warning("clear logs job err:", err)
  35. }
  36. defer logFilePrev.Close()
  37. err = os.Truncate(logFiles[i], 0)
  38. if err != nil {
  39. logger.Warning("clear logs job err:", err)
  40. }
  41. }
  42. }