service/app/firenze/cmd/main.go

100 lines
2.2 KiB
Go
Raw Normal View History

2024-10-12 16:28:53 +08:00
package main
import (
"fmt"
"math/rand"
"net"
"net/http"
"os"
"runtime"
"service/app/firenze/conf"
"service/app/firenze/controller"
"service/app/firenze/service"
"service/library/configcenter"
"service/library/httpengine"
"service/library/httpserver"
"service/library/logger"
"strings"
"time"
)
func main() {
defer func() {
logger.Recover()
}()
rand.Seed(time.Now().UnixNano())
// 加载配置
// 1.默认配置
configPath := "/root/liwanglin/service/etc/firenze/firenze-local.yaml"
//configPath := "/Users/erwin/wishpalv2/service/etc/firenze/firenze-local-lwl.yaml"
//if os.Getenv("PROJECT_ENV") == "production" {
// configPath = consts.ProductionConfigPath
//}
cfg := new(conf.ConfigSt)
err := configcenter.LoadConfig(configPath, cfg)
if err != nil {
msg := fmt.Sprintf("LoadConfig fail, path: %v, err: %v", configPath, err)
PrintAndExit(msg)
}
// 初始化日志
logger.InitLogger(cfg.Log)
// 初始化服务发现
//err = servicediscovery.Init(cfg.SD)
//if err != nil {
// msg := fmt.Sprintf("Init servicediscovery fail, path: %v, err: %v", configPath, err)
// PrintAndExit(msg)
//}
// 初始化服务
service.DefaultService = service.NewService()
service.DefaultService.Init(cfg)
// 初始化http server
ip := cfg.App.Ip
port := cfg.App.Port
router := httpengine.NewRouter()
controller.Init(router)
srv := &http.Server{
Addr: fmt.Sprintf("%s:%d", ip, port),
Handler: router,
}
httpserver.StartFirenzeServer(srv, cfg.DefaultConfig, ip, port)
}
func PrintAndExit(msg string) {
_, file, line, _ := runtime.Caller(1)
errorMsg := fmt.Sprintf("file %s, line %d, %s\n", file, line, msg)
_, _ = fmt.Fprintf(os.Stderr, errorMsg)
logger.Fatal(errorMsg)
time.Sleep(1) //wait logger flush
//os.Exit(1)
}
func GetIp() string {
addrs, err := net.InterfaceAddrs()
if err != nil {
PrintAndExit("get ip fail")
return "127.0.0.1"
}
retIp := ""
for _, address := range addrs {
// 检查ip地址判断是否回环地址
if ipnet, ok := address.(*net.IPNet); ok && !ipnet.IP.IsLoopback() {
if ipnet.IP.To4() != nil {
ip := ipnet.IP.String()
if strings.HasPrefix(ip, "172.") {
retIp = ip
break
}
}
}
}
return retIp
}