52 lines
1.2 KiB
Go
52 lines
1.2 KiB
Go
// Package main 是猪场控制系统的入口点
|
|
// 负责初始化核心应用并管理其生命周期
|
|
package main
|
|
|
|
import (
|
|
"os"
|
|
"os/signal"
|
|
"syscall"
|
|
|
|
"git.huangwc.com/pig/pig-farm-controller/internal/config"
|
|
"git.huangwc.com/pig/pig-farm-controller/internal/core"
|
|
"git.huangwc.com/pig/pig-farm-controller/internal/logs"
|
|
)
|
|
|
|
func main() {
|
|
// 初始化日志记录器
|
|
logger := logs.NewLogger()
|
|
|
|
// 加载配置
|
|
cfg := config.NewConfig()
|
|
if err := cfg.Load("config.yml"); err != nil {
|
|
logger.Error("Failed to load config: " + err.Error())
|
|
os.Exit(1)
|
|
}
|
|
|
|
// 创建核心应用实例
|
|
app := core.NewApplication(cfg)
|
|
|
|
// 启动核心应用
|
|
if err := app.Start(); err != nil {
|
|
logger.Error("Failed to start application: " + err.Error())
|
|
os.Exit(1)
|
|
}
|
|
|
|
// 记录应用启动成功
|
|
logger.Info("Application started successfully")
|
|
|
|
// 等待中断信号以优雅地关闭应用
|
|
sigChan := make(chan os.Signal, 1)
|
|
signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)
|
|
<-sigChan
|
|
|
|
// 停止核心应用
|
|
if err := app.Stop(); err != nil {
|
|
logger.Error("Failed to stop application: " + err.Error())
|
|
os.Exit(1)
|
|
}
|
|
|
|
// 记录应用停止成功
|
|
logger.Info("Application stopped successfully")
|
|
}
|