golang开发
项目目录结构
demo
config
config.go
conf
config.yaml
log
utils
utils.go
main.go
代码
config.go
package config
import (
"fmt"
"github.com/toolkits/pkg/file"
"github.com/toolkits/pkg/logger"
"os"
)
type ConfigT struct {
Logger ConfigLogger `yaml:"logger"`
}
type ConfigLogger struct {
Dir string `yaml:"dir"`
Level string `yaml:"level"`
KeepHours uint `yaml:"keepHours"`
}
var Config *ConfigT
func Init(c *ConfigT) {
fb, err := logger.NewFileBackend(c.Logger.Dir)
if err != nil {
fmt.Println("cannot init logger:", err)
os.Exit(1)
}
fb.SetRotateByHour(false)
fb.SetKeepHours(c.Logger.KeepHours)
logger.SetLogging(c.Logger.Level, fb)
}
func GetConfig() *ConfigT {
if err := file.ReadYaml("conf/config.yaml", &Config); err != nil {
panic(err)
}
Init(Config)
return Config
}
config.yaml
logger:
dir: logs
level: DEBUG
keepHours: 240
utils.go
package utils var Cfg *config.ConfigT = config.GetConfig()