util.go 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package util
  2. import (
  3. "fmt"
  4. "io"
  5. . "jy/mongodbutil"
  6. "log"
  7. "os"
  8. qu "qfw/util"
  9. . "gopkg.in/mgo.v2/bson"
  10. "gopkg.in/natefinch/lumberjack.v2"
  11. )
  12. var syncint chan bool //获取下标锁
  13. var Config map[string]interface{}
  14. var Se = qu.SimpleEncrypt{Key: "topnet@extract"}
  15. func init() {
  16. //输出日志配置,多输出源
  17. filelog := &lumberjack.Logger{
  18. Filename: "./out.log",
  19. MaxSize: 500, // megabytes
  20. MaxBackups: 3,
  21. MaxAge: 20, //days
  22. Compress: true, // disabled by default
  23. }
  24. writers := []io.Writer{
  25. filelog,
  26. os.Stdout,
  27. }
  28. fileAndStdoutWriter := io.MultiWriter(writers...)
  29. log.SetOutput(fileAndStdoutWriter)
  30. syncint = make(chan bool, 1)
  31. }
  32. func InitMgoPool() {
  33. initCap := qu.IntAll(Config["dbsize"])
  34. addr := qu.ObjToString(Config["mgodb"])
  35. dbname := qu.ObjToString(Config["dbname"])
  36. Mgo = MgoFactory(initCap, initCap*3, 120, addr, dbname)
  37. }
  38. func GetSyncIndex(code string) string {
  39. tmp := ""
  40. syncint <- true
  41. Mgo.Update("rule_code", `{"code":"`+code+`"}`, M{"$inc": M{"index": 1}}, true, false)
  42. data, _ := Mgo.FindOne("rule_code", `{"code":"`+code+`"}`)
  43. <-syncint
  44. if len(*data) > 0 {
  45. tmp = code + "_" + fmt.Sprint((*data)["index"])
  46. }
  47. return tmp
  48. }