saveDb.go 928 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package savedb
  2. import (
  3. "app.yhyue.com/moapp/jybase/mongodb"
  4. "bp.jydev.jianyu360.cn/BaseService/gateway/common/db"
  5. "log"
  6. "sync"
  7. "time"
  8. )
  9. type DbLogs struct {
  10. Cache []map[string]interface{}
  11. lock sync.Mutex
  12. Db mongodb.MongodbSim
  13. }
  14. //SaveLogTask 定时保存日志
  15. func (s *DbLogs) SaveLogTask() {
  16. s.lock.Lock()
  17. if len(s.Cache) >= 1 {
  18. tmp := s.Cache
  19. s.Cache = make([]map[string]interface{}, 0)
  20. go func() {
  21. log.Println("timer..save..visit..log", len(tmp))
  22. db.MgoLog.SaveBulk("jy_gateway_logs", tmp...)
  23. }()
  24. }
  25. s.lock.Unlock()
  26. time.AfterFunc(5*time.Minute, s.SaveLogTask)
  27. }
  28. func (s *DbLogs) AddLogToTask(data map[string]interface{}) {
  29. s.lock.Lock()
  30. s.Cache = append(s.Cache, data)
  31. if len(s.Cache) >= 5 {
  32. tmp := s.Cache
  33. s.Cache = make([]map[string]interface{}, 0)
  34. go func() {
  35. log.Println("save..visit..log", len(tmp), s.Db.SaveBulk("jy_gateway_logs", tmp...))
  36. }()
  37. }
  38. s.lock.Unlock()
  39. }