-
Notifications
You must be signed in to change notification settings - Fork 0
/
config.go
69 lines (59 loc) · 1.72 KB
/
config.go
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
package main
import (
"github.com/rs/zerolog"
"github.com/spf13/viper"
)
// Config 配置文件结构体
type Config struct {
Redis bool //开启redis
RedisHost string //redis地址
RedisPort string //redis端口
RedisPassword string //redis密码
RedisDB int //redis数据库 0-15
DB bool //开启DB
DBHost string //DB地址
DBPort string //DB端口
DBUsername string //DB用户
DBPassword string //DB密码
DBName string //DB数据库
DBDebug bool //开启数据库sql语句
MaxOpenConns int //最大连接数
MaxIdleConns int //最大空闲连接
Port string //http端口
}
// TomlConfig toml的配置文件
type TomlConfig struct {
Runmode Runmode
Pro Pro
Dev Dev
}
type Pro = Config
type Dev = Config
type Runmode struct {
Runmode string
}
var conf = new(Config)
var logger = zerolog.New(zerolog.NewConsoleWriter(func(w *zerolog.ConsoleWriter) {
w.TimeFormat = "2006-01-02 15:04:05"
})).With().Timestamp().Caller().Logger()
func initConfig() {
viper.SetConfigName("config") // 设置配置文件名 (不带后缀)
viper.AddConfigPath("/etc/new/") // 第一个搜索路径
viper.AddConfigPath("$HOME/.new/") // 可以多次调用添加路径
viper.AddConfigPath(".") // 比如添加当前目录
err := viper.ReadInConfig() // 搜索路径,并读取配置数据
if err != nil {
logger.Fatal().Msgf("Fatal error config file: %s\n", err.Error())
}
tc := new(TomlConfig)
if err := viper.Unmarshal(tc); err != nil {
logger.Fatal().Msg(err.Error())
}
if tc.Runmode.Runmode == "dev" {
*conf = tc.Dev
} else {
*conf = tc.Pro
}
logger.Info().Msgf("%+v", conf)
logger.Info().Msg("初始化config成功")
}