优化
This commit is contained in:
40
utils/viper.go
Normal file
40
utils/viper.go
Normal file
@@ -0,0 +1,40 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"api/config"
|
||||
"flag"
|
||||
"github.com/spf13/viper"
|
||||
"log"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// InitViper 优先级: 方法传参 > 命令行 > 默认值
|
||||
func InitViper() {
|
||||
// 根据命令行读取配置文件路径
|
||||
var configPath string
|
||||
flag.StringVar(&configPath, "c", "", "chosse config file.")
|
||||
flag.Parse()
|
||||
if configPath != "" { // 命令行读取到参数
|
||||
log.Printf("您正在使用命令行的-c参数传递的值,config的路径为 %s\n", configPath)
|
||||
} else { // 命令行未读取到参数
|
||||
log.Println("命令行参数为空, 默认加载: config/config.yaml")
|
||||
configPath = "config/config.yaml"
|
||||
}
|
||||
|
||||
// 目前读取固定固定路径的配置文件
|
||||
v := viper.New()
|
||||
v.SetConfigFile(configPath)
|
||||
v.AutomaticEnv() // 允许使用环境变量
|
||||
v.SetEnvKeyReplacer(strings.NewReplacer(".", "_")) // SERVER_APPMODE => SERVER.APPMODE
|
||||
|
||||
// 读取配置文件
|
||||
if err := v.ReadInConfig(); err != nil {
|
||||
log.Panic("配置文件读取失败: ", err)
|
||||
}
|
||||
|
||||
// 加载配置文件内容到结构体对象
|
||||
if err := v.Unmarshal(&config.Cfg); err != nil {
|
||||
log.Panic("配置文件内容加载失败: ", err)
|
||||
}
|
||||
log.Println("配置文件内容加载成功")
|
||||
}
|
||||
Reference in New Issue
Block a user