go语言使用beego/config模块读取配置文件
配置文件:conf.ini
// conf.ini
[logs]
log_level=debug
log_path=./logs/lagagent.log
[collect]
log_path=/home/work/nginx/access.log
topic=nginx_log
main.go
package main
import (
"github.com/astaxie/beego/config"
"errors"
)
var (
appConf *Config
)
// log conf
type Config struct {
logLevel string
logPath string
collectConf []CollectConf
}
// log collect
type CollectConf struct {
logPath string
topic string
}
func loadConf(confType, fileName string) (err error) {
conf, err := conf.NewConfig(confType, fileName)
if err != nil {
fmt.Print("new config failed")
return
}
appConf = &Config{}
appConf.logLevel = conf.String("logs::log_level")
if len(appConf.logLevel) == 0 {
appConf.logLevel = "debug"
}
appConf.logPath= conf.String("logs::log_path")
if len(appConf.logPath) == 0 {
appConf.logPath= "./logs"
}
err := loadCollectConf(conf)
if err != nil {
fmt.Printf("load collect conf failed!, err:%v\n", err)
return
}
return
}
func loadCollectConf(conf config.Configer) (err error) {
var cc CollectConf
cc.logPath = conf.String("collect::log_path")
if len(cc.logPath) == 0 {
err = errors.New("invalid collect::log_path")
return
}
cc.topic = conf.String("collect::topic")
if len(cc.topic) == 0 {
err = errors.New("invalid collect::topic")
return
}
appConf.collectConf.append(appConf.collectConf, cc) // 配置写入到Conf
return
}