yaml配置文件:
mysql:
host: 127.0.0.1
port: 3306
db: 数据库
user: root
password: '数据库密码'
config : 'charset=utf8mb4&parseTime=true&loc=Local' //这里有loc=Local是为保证写入mysql的本地时间
logger:
level: debug
prefix: '[gweb]' //
director: log //
show_line: true //显示行号
log_in_console: true //显示在控制台
log_level: dev
system:
host: 0.0.0.0
port: 8000
env: release
redis:
host: 127.0.0.1
port: 6379
读取并且初始化配置:
创建config.go文件
package config
type Config struct {
Mysql Mysql `yaml:"mysql"`
Logger Logger `yaml:"logger"`
System System `yaml:"system"`
}
//创建一个结构体保存当前的主要配置
type Logger struct {
Level string `yaml:"level"`
Prefix string `yaml:"prefix"`
Director string `yaml:"director"`
ShowLine bool `yaml:"show_line"`
LogInConsole bool `yaml:"log_in_console"`
}
type System struct {
Host string `yaml:"host"`
Port int `yaml:"port"`
Env string `yaml:"env"`
}
func (s System) Addr() string {
addr := fmt.Sprintf("%s:%d", s.Host, s.Port)
return addr
}
type Mysql struct {
Host string `yaml:"host"`
Port int `yaml:"port"`
Db string `yaml:"db"`
User string `yaml:"user"`
PassWord string `yaml:"password"`
LogLevel string `yaml:"log_level"`
Config string `yaml:"config"`
}
// 获取当前的Mysql连接
func (m Mysql) Dsn() string {
return m.User + ":" + m.PassWord + "@tcp(" + m.Host + ":" + strconv.Itoa(m.Port) + ")/" + m.Db + "?" + m.Config
}