Wego Web Framework | GitHub 开发文档 开发社区
快速入门
Web模块
ORM模块
其他模块

配置参数

参数初始化

  wego使用了INI格式的配置文件来管理配置参数。wego应用中的参数分为系统参数(wego框架使用的参数)和业务参数,这些参数可使用编码的方式来设置,但最佳的方法是使用配置文件。wego使用InitWeb()初始化函数来加载配置文件,并自动给系统参数赋值。使用InitWeb()函数初时可以指定一个配置文件,若没有指定则使用缺省的配置文件:./app.conf。


func main() {
    web, err := wego.InitWeb()
	if err != nil{
		log.Error(err)
		return
	}

	err = web.Run()
	if err != nil {
		log.Error(err)
	}
}

获取业务参数

调用wego.InitWeb()后wego会自动将系统参数解析到WebEngine.Config中,业务参数则需要用户自己调用配置数据的GetXXX函数来获取。例如:若在配置文件中定义了数据库信息:


#应用名称
app_name = demo2
#mysql数据库的配置参数
mysql = root:rootpwd@tcp(127.0.0.1:3306)/demp?charset=utf8

在程序中可以按照下面的方式来获取mysql的配置:


func main() {
	web, err := wego.InitWeb()
	if err != nil{
		log.Error(err)
		return
	}

	mysql_cnn := web.Config.GetString("mysql")
	if mysql_cnn.Error != nil {
		log.Error(mysql_cnn.Error)
		return
	}
	log.Info(mysql_cnn.Value)

	err = web.Run()
	if err != nil {
		log.Error(err)
	}
}

使用wego的config模块,也可以将配置信息直接绑定到struct, 例如定义redis相关的参数:


type RedisParam struct {
	//Redis地址
	Address			string			`ini:"address"`
	//Redis登录密码
	DbPwd 			string			`ini:"db_pwd"`
}

配置文件内容为:


#应用名称
app_name = demo2
[redis]
#Redis地址
address = 127.0.0.1
#Redis登录密码
db_pwd = demopwd

则读取redis的信息的代码如下:


func main() {
	web, err := wego.InitWeb()
	if err != nil{
		log.Error(err)
		return
	}

	var redisParam RedisParam
	err = web.Config.Section("redis").GetStruct(&redisParam)
	if err != nil {
		log.Error(err)
		return
	}
	log.Info(redisParam)

	err = web.Run()
	if err != nil {
		log.Error(err)
	}
}

wego系统参数


一个配置文件的示例:
#应用名称
app_name = demo2
#部署名称
server_name = demo
#是否显示请求日志
show_url_log = true
#是否显示sql日志
show_sql_log = true

[server]
#http监听端口
http_port = 8080

[session]
#session 是否开启
session_on = true
#session类型:cookie、cache
session_store=cookie
#客户端的cookie的名称
cookie_name = "wego2"
#session 过期时间, 单位秒
life_time = 3600
#session数据的hash字符串
hash_key = 11223344

[dlog]
#终端类型: 0 终端 1 文件
output = 1
#日志级别: 0 OFF 1 FATAL 2 ERROR 3 WARN 4 INFO 5 DEBUG
level = 5
#文件路径
path = ./logs
#是否在日志里面显示源码文件名和行号
show_caller = true
#是否将json、xml展开显示
show_indent = true

配置文件参数说明:


type WebConfig struct {
	//应用名称
	AppName      	string        	`ini:"app_name"`
	//服务器名称
	ServerName 		string			`ini:"server_name"`
	//缓是否开启缓存
	CacheOn 		bool			`ini:"cache_on"`
	//cache类型:redis、memcache、memory
	CacheStore 		string			`ini:"cache_store;default=memory"`
	//是否显示请求日志,默认为 true
	ShowUrlLog		bool			`ini:"show_url_log;default=true"`
	//是否显示请求日志,默认为 true
	ShowSqlLog		bool			`ini:"show_sql_log;default=true"`
	//设置调试日志级别:0 OFF 1 FATAL 2 ERROR 3 WARN 4 INFO 5 DEBUG
	ShowDebugLog	int				`ini:"show_debug_log"`
	//防JSON劫持的前缀字符串
	JsonPrefix		string			`ini:"json_prefix"`
	//获取client ip的header
	IPHeader		string			`ini:"ip_header"`
	//Web服务配置
	ServerParam 	ServerConfig 	`ini:"server"`
	//Session配置
	SessionParam 	SessionConfig 	`ini:"session"`
	//内存缓存配置
	MemoryDbParam 	MemoryDbConfig 	`ini:"memory"`
	//Redis缓存配置
	RedisParam 		RedisConfig 	`ini:"redis"`
	//Memcache缓存配置
	MemcacheParam 	MemcacheConfig 	`ini:"memcache"`
	//日志模块配置
	DlogParam    	DlogConfig    	`ini:"dlog"`
}

//Web服务配置
type ServerConfig struct {
	//是否启用 HTTPS,默认是false
	UseHttps 		bool			`ini:"use_https"`
	//Http监听地址,默认为空
	HttpAddr 		string			`ini:"http_addr"`
	//Http监听端口,默认为 8080
	HttpPort     	uint          	`ini:"http_port;default=8080"`
	//Https监听地址,默认为空
	HttpsAddr 		string			`ini:"https_addr"`
	//Https监听端口,默认为 10443
	HttpsPort     	uint          	`ini:"https_port;default=10443"`
	//HTTPS证书路径
	HttpsCertFile 	string			`ini:"cert_file"`
	//HTTPS证书 keyfile 的路径
	HttpsKeyFile 	string			`ini:"key_file"`
	//设置 HTTP 的超时时间
	ReadTimeout 	time.Duration	`ini:"read_timeout"`
	//设置 HTTP 的超时时间
	WriteTimeout 	time.Duration	`ini:"write_timeout"`
	//POST请求的默认内存缓存大小,单位:M
	MaxBody 		int64			`ini:"max_body"`
	//是否开启 gzip,输出的内容会进行 gzip,根据Accept-Encoding来判断
	EnableGzip 		bool			`ini:"gzip_on"`
	//压缩长度阈值
	GzipSize 		int64			`ini:"gzip_size"`
}

//Session配置
type SessionConfig struct {
	//缓是否开启session, 默认为 false
	SessionOn 		bool			`ini:"session_on"`
	//session类型:cookie、cache
	SessionStore 	string			`ini:"session_store;default=cookie"`
	//客户端的cookie的名称前缀
	CookieName		string			`ini:"cookie_name;default=wego"`
	//保存session数据的cookie域名, 默认空
	Domain 			string			`ini:"domain"`
	//session 过期时间,单位:秒,默认值是3600
	LifeTime    	uint			`ini:"life_time;default=3600"`
	//设置cookie的SameSite属性
	SameSite 		http.SameSite	`ini:"samesite"`
	//session数据的hash字符串,若session的存储类型为cookie,则必须提供
	HashKey 		string			`ini:"hash_key"`
}

//日志模块配置
type DlogConfig struct {
	//日志输出类型配置,0 终端 1 文件
	Output			int				`ini:"output"`
	//日志输出级别: 0 OFF 1 FATAL 2 ERROR 3 WARN 4 INFO 5 DEBUG
	Level 			int				`ini:"level;default=5"`
	//日志文件存储路径,缺省:logs
	Path 			string			`ini:"path;default=logs"`
	//是否在日志里面显示源码文件名和行号,默认 true
	ShowCaller 		bool			`ini:"show_caller;default=true"`
	//是否将json、xml缩进显示
	ShowIndent 		bool			`ini:"show_indent;default=true"`
}