1 Star 0 Fork 0

yzsunjianguo / sponge

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
initApp.go 3.28 KB
一键复制 编辑 原始数据 按行查看 历史
yzsunjianguo 提交于 2024-02-08 14:53 . init
// Package initial is the package that starts the service to initialize the service, including
// the initialization configuration, service configuration, connecting to the database, and
// resource release needed when shutting down the service.
package initial
import (
"flag"
"fmt"
"strconv"
"gitee.com/yzsunjianguo/sponge/configs"
"gitee.com/yzsunjianguo/sponge/internal/config"
"gitee.com/yzsunjianguo/sponge/internal/model"
"gitee.com/yzsunjianguo/sponge/pkg/conf"
"gitee.com/yzsunjianguo/sponge/pkg/logger"
"gitee.com/yzsunjianguo/sponge/pkg/nacoscli"
"gitee.com/yzsunjianguo/sponge/pkg/stat"
"gitee.com/yzsunjianguo/sponge/pkg/tracer"
"github.com/jinzhu/copier"
)
var (
version string
configFile string
enableConfigCenter bool
)
// InitApp initial app configuration
func InitApp() {
initConfig()
cfg := config.Get()
// initializing log
_, err := logger.Init(
logger.WithLevel(cfg.Logger.Level),
logger.WithFormat(cfg.Logger.Format),
logger.WithSave(cfg.Logger.IsSave),
)
if err != nil {
panic(err)
}
logger.Debug(config.Show())
logger.Info("init logger succeeded")
// initializing database
model.InitMysql()
logger.Info("init mysql succeeded")
model.InitCache(cfg.App.CacheType)
// initializing tracing
if cfg.App.EnableTrace {
tracer.InitWithConfig(
cfg.App.Name,
cfg.App.Env,
cfg.App.Version,
cfg.Jaeger.AgentHost,
strconv.Itoa(cfg.Jaeger.AgentPort),
cfg.App.TracingSamplingRate,
)
logger.Info("init tracer succeeded")
}
// initializing the print system and process resources
if cfg.App.EnableStat {
stat.Init(
stat.WithLog(logger.Get()),
stat.WithAlarm(), // invalid if it is windows, the default threshold for cpu and memory is 0.8, you can modify them
)
logger.Info("init statistics succeeded")
}
}
func initConfig() {
flag.StringVar(&version, "version", "", "service Version Number")
flag.BoolVar(&enableConfigCenter, "enable-cc", false, "whether to get from the configuration center, "+
"if true, the '-c' parameter indicates the configuration center")
flag.StringVar(&configFile, "c", "", "configuration file")
flag.Parse()
if enableConfigCenter {
// get the configuration from the configuration center (first get the nacos configuration,
// then read the service configuration according to the nacos configuration center)
if configFile == "" {
configFile = configs.Path("serverNameExample_cc.yml")
}
nacosConfig, err := config.NewCenter(configFile)
if err != nil {
panic(err)
}
appConfig := &config.Config{}
params := &nacoscli.Params{}
_ = copier.Copy(params, &nacosConfig.Nacos)
format, data, err := nacoscli.GetConfig(params)
if err != nil {
panic(fmt.Sprintf("connect to configuration center err, %v", err))
}
err = conf.ParseConfigData(data, format, appConfig)
if err != nil {
panic(fmt.Sprintf("parse configuration data err, %v", err))
}
if appConfig.App.Name == "" {
panic("read the config from center error, config data is empty")
}
config.Set(appConfig)
} else {
// get configuration from local configuration file
if configFile == "" {
configFile = configs.Path("serverNameExample.yml")
}
err := config.Init(configFile)
if err != nil {
panic("init config error: " + err.Error())
}
}
if version != "" {
config.Get().App.Version = version
}
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/yzsunjianguo/sponge.git
git@gitee.com:yzsunjianguo/sponge.git
yzsunjianguo
sponge
sponge
v1.0.3

搜索帮助

Bbcd6f05 5694891 0cc6727d 5694891