49 lines
1.3 KiB
Go
49 lines
1.3 KiB
Go
package main
|
|
|
|
import (
|
|
"log"
|
|
"net/http"
|
|
|
|
"github.com/emsoft/HospitalPay-Go/internal/config"
|
|
"github.com/emsoft/HospitalPay-Go/internal/pkg/database"
|
|
"github.com/emsoft/HospitalPay-Go/internal/pkg/logger"
|
|
"github.com/emsoft/HospitalPay-Go/internal/server"
|
|
"github.com/prometheus/client_golang/prometheus/promhttp"
|
|
)
|
|
|
|
func main() {
|
|
// 初始化配置
|
|
if err := config.Init(); err != nil {
|
|
log.Fatalf("Failed to initialize config: %v", err)
|
|
}
|
|
|
|
// 初始化日志
|
|
if err := logger.Init(); err != nil {
|
|
log.Fatalf("Failed to initialize logger: %v", err)
|
|
}
|
|
|
|
// 初始化数据库
|
|
if err := database.Init(); err != nil {
|
|
logger.Fatalf("Failed to initialize database: %v", err)
|
|
}
|
|
defer database.Close()
|
|
|
|
// 启动监控服务器
|
|
if config.GlobalConfig.Monitoring.Enabled {
|
|
go func() {
|
|
http.Handle("/metrics", promhttp.Handler())
|
|
addr := ":" + config.GlobalConfig.Monitoring.PrometheusPort
|
|
logger.Infof("Starting monitoring server on %s", addr)
|
|
if err := http.ListenAndServe(addr, nil); err != nil {
|
|
logger.Fatalf("Failed to start monitoring server: %v", err)
|
|
}
|
|
}()
|
|
}
|
|
|
|
// 创建并启动 Socket 服务器
|
|
socketServer := server.NewSocketServer()
|
|
if err := socketServer.Start(); err != nil {
|
|
logger.Fatalf("Failed to start socket server: %v", err)
|
|
}
|
|
}
|