1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
package initialize
import (
"fmt"
"github.com/fsnotify/fsnotify"
"github.com/spf13/viper"
_ "github.com/spf13/viper/remote"
"go.uber.org/zap"
"github.com/jimyag/shop/api/user/global"
)
func getEnvBool(env string) bool {
viper.AutomaticEnv()
return viper.GetBool(env)
}
// LoadConsulConfigInfo 加载本地的 consul 文件
func LoadConsulConfigInfo() {
configFilePath := "consul-info.yaml"
v := viper.New()
v.SetConfigFile(configFilePath)
if err := v.ReadInConfig(); err != nil {
global.Logger.Fatal("加载配置文件失败.....",
zap.Error(err),
zap.String("path", configFilePath),
)
}
global.Logger.Info("配置加载成功....",
zap.String("path", configFilePath),
)
if err := v.Unmarshal(&global.ConsulCenterInfo); err != nil {
global.Logger.Fatal("解析配置文件失败....",
zap.Error(err),
zap.String("path", configFilePath),
)
}
global.Logger.Info("成功加载配置文件",
zap.String("path", configFilePath),
zap.Any("content", global.ConsulCenterInfo),
)
v.WatchConfig()
v.OnConfigChange(func(in fsnotify.Event) {
global.Logger.Info("配置文件产生变化....",
zap.String("name", in.String()),
zap.String("path", configFilePath),
)
if err := v.ReadInConfig(); err != nil {
global.Logger.Fatal("修改的配置文件字段出错",
zap.String("field", in.String()),
zap.Error(err),
)
}
if err := v.Unmarshal(&global.ConsulCenterInfo); err != nil {
global.Logger.Fatal("解析配置文件出错",
zap.String("field", in.String()),
zap.Error(err),
)
}
global.Logger.Info("配置文件内容", zap.Any("config", global.ConsulCenterInfo))
})
}
func LoadRemoteConfig() {
remoteViper := viper.New()
path := global.ConsulCenterInfo.ReleasePath
if debug := getEnvBool(global.ConsulCenterInfo.EnvName); debug {
path = global.ConsulCenterInfo.DebugPath
}
remoteViper.SetConfigType(global.ConsulCenterInfo.FileType)
err := remoteViper.AddRemoteProvider(global.ConsulCenterInfo.Type,
fmt.Sprintf("%s:%d", global.ConsulCenterInfo.Host,
global.ConsulCenterInfo.Port,
),
path,
)
if err != nil {
global.Logger.Fatal("添加配置文件失败", zap.Error(err))
return
}
err = remoteViper.ReadRemoteConfig()
if err != nil {
global.Logger.Fatal("读取远端配置文件失败", zap.Error(err))
}
err = remoteViper.Unmarshal(&global.ServerConfig)
if err != nil {
global.Logger.Fatal("解析远端配置文件失败", zap.Error(err))
}
global.Logger.Info("成功加载远端配置文件....", zap.Any("config", global.ServerConfig))
}
|