global.go 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. package global
  2. import (
  3. "fmt"
  4. "github.com/fsnotify/fsnotify"
  5. "github.com/go-redis/redis/v8"
  6. "github.com/olivere/elastic/v7"
  7. oplogging "github.com/op/go-logging"
  8. "github.com/qiniu/qmgo"
  9. "github.com/spf13/viper"
  10. "gorm.io/gorm"
  11. "hongze/hongze_yb/config"
  12. "hongze/hongze_yb/utils"
  13. "io"
  14. )
  15. var (
  16. CONFIG config.Config //配置文件
  17. LOG *oplogging.Logger
  18. FILE_LOG *oplogging.Logger // 自定义的输出日志
  19. MONGO_LOG *oplogging.Logger // 自定义的输出日志
  20. MYSQL map[string]*gorm.DB //数据库连接配置
  21. MYSQL_LOG io.Writer
  22. DEFAULT_MYSQL *gorm.DB //默认数据库连接配置
  23. Redis *redis.Client //redis链接
  24. EsClient *elastic.Client
  25. MgoDataCli *qmgo.Client // mongodb客户端连接
  26. )
  27. const ConfigFile = "config/config.yaml" //本地(测试)环境下的配置文件地址
  28. const ProConfigFile = "/home/code/config/hongze_yb/config/config.yaml" //生产环境下的配置文件地址
  29. func init() {
  30. v := viper.New()
  31. configFilePath := ConfigFile
  32. //如果不存在该配置文件,那么应该是线上环境,那么去寻找线上配置文件的路径
  33. if !utils.FileIsExist(configFilePath) {
  34. configFilePath = ProConfigFile
  35. }
  36. //设置配置文件
  37. v.SetConfigFile(configFilePath)
  38. err := v.ReadInConfig()
  39. if err != nil {
  40. panic(fmt.Errorf("读取配置失败,Err: %s \n", err))
  41. }
  42. //持续监听文件
  43. v.WatchConfig()
  44. v.OnConfigChange(func(e fsnotify.Event) {
  45. fmt.Println("配置文件变更:", e.Name)
  46. if err := v.Unmarshal(&CONFIG); err != nil {
  47. fmt.Println("配置重赋值失败,Err:", err)
  48. }
  49. fmt.Println(CONFIG)
  50. })
  51. if err := v.Unmarshal(&CONFIG); err != nil {
  52. fmt.Println("配置初始化赋值失败,Err:", err)
  53. }
  54. }