autoclean.go 757 B

123456789101112131415161718192021222324252627282930313233
  1. package server
  2. import (
  3. "time"
  4. )
  5. func (server *Handler) startLogAutoCleaning() {
  6. //create the routine for auto clean trash
  7. go func() {
  8. for {
  9. <-time.After(60 * time.Second) //no rush, clean every five minute
  10. //if there is more than 1000 log, trim it.
  11. if len(server.log) >= 1000 {
  12. server.log = server.log[1000:]
  13. }
  14. //those are old old old logs, no longer need to store it.
  15. for i, data := range server.log {
  16. if time.Now().Sub(data.Timestamp).Minutes() >= 180 {
  17. server.removeLog(i)
  18. }
  19. }
  20. }
  21. }()
  22. }
  23. func (server *Handler) removeLog(i int) {
  24. if len(server.log)-1 != i {
  25. server.log = append(server.log[:i], server.log[i+1:]...)
  26. } else {
  27. // if it is the last item, just remove it
  28. server.log = server.log[:i]
  29. }
  30. }