package initialization import ( "github.com/fsnotify/fsnotify" "github.com/spf13/viper" "go-wechat/client" "go-wechat/config" "log" ) // 配置管理工具 var vp *viper.Viper // InitConfig // @description: 初始化配置 func InitConfig() { vp = viper.New() vp.AddConfigPath(".") // 设置配置文件路径 vp.SetConfigName("config") // 设置配置文件名 vp.SetConfigType("yaml") // 设置配置文件类型 // 读取配置文件 if err := vp.ReadInConfig(); err != nil { log.Panicf("读取配置文件失败: %v", err) } // 绑定配置文件 if err := vp.Unmarshal(&config.Conf); err != nil { log.Panicf("配置文件解析失败: %v", err) } log.Printf("配置文件解析完成: %+v", config.Conf) if !config.Conf.Wechat.Check() { log.Panicf("微信HOOK配置缺失") } // 初始化数据库连接 client.InitMySQLClient() //redis.Init() // 下面的代码是配置变动之后自动刷新的 vp.WatchConfig() vp.OnConfigChange(func(e fsnotify.Event) { // 绑定配置文件 if err := vp.Unmarshal(&config.Conf); err != nil { log.Printf("配置文件更新失败: %v", err) } else { if !config.Conf.Wechat.Check() { log.Panicf("微信HOOK配置缺失") } // 初始化数据库连接 client.InitMySQLClient() //redis.Init() } }) }