package config import ( "basic.com/valib/logger.git" "github.com/fsnotify/fsnotify" "github.com/spf13/viper" "log" ) type server struct { AnalyServerId string `mapstructure:"analyServerId"` NetworkAdapter string `mapstructure:"networkAdapter"` } var Server = &server{} type esinfo struct { EsIndex esindexlist `mapstructure:"index"` } type esindexlist struct { AiOcean index `mapstructure:"aiOcean"` } type index struct { IndexName string `mapstructure:"index"` IndexType string `mapstructure:"type"` } type dbpersoncompare struct { MysqlAddr string `mapstructure:"mysqlAddr"` Username string `mapstructure:"username"` Password string `mapstructure:"password"` Database string `mapstructure:"database"` PersonTable string `mapstructure:"personTable"` ServePort int `mapstructure:"servePort"` } type espersoncompare struct { ServePort int `mapstructure:"servePort"` ESIP string `mapstructure:"esip"` ESPort string `mapstructure:"esPort"` } var DbPersonCompInfo = &dbpersoncompare{} var EsCompServerInfo = &espersoncompare{} var EsInfo = &esinfo{} type LogConfig struct { Path string `mapstructure:"path"` //日志存储路径 Level int `mapstructure:"level"` //日志等级 MaxSize int `mapstructure:"maxSize"` //日志文件大小上限 MaxBackups int `mapstructure:"maxBackups"` //日志压缩包个数 MaxAge int `mapstructure:"maxAge"` //保留压缩包天数 } var LogConf = &LogConfig{} func Init(env string) { var err error v := viper.New() v.SetConfigType("yaml") v.SetConfigName(env) v.AddConfigPath("./") v.AddConfigPath("./config/") err = v.ReadInConfig() if err != nil { log.Fatal("error on parsing configuration file") } read2Conf(v) v.WatchConfig() v.OnConfigChange(func(in fsnotify.Event) { read2Conf(v) }) } func read2Conf(v *viper.Viper) { v.UnmarshalKey("es", EsInfo) v.UnmarshalKey("server", Server) v.UnmarshalKey("dbpersoncompare", DbPersonCompInfo) v.UnmarshalKey("espersoncompare", EsCompServerInfo) v.UnmarshalKey("log", LogConf) logger.SetLevel(LogConf.Level) }