This commit is contained in:
oneao committed 2026-04-03 17:29:24 +08:00
1 parent 3420976bd6
commit ad47e5167b
8 files changed
+184 -70

No files matched your search

@@ -4,9 +4,6 @@ import (
"allapp-go/internal/bootstrap/boots"
"allapp-go/internal/config"
"allapp-go/pkg/logger"
"os"
"os/signal"
"syscall"
"github.com/jackc/pgx/v5/pgxpool"
)
@@ -16,7 +13,10 @@ type App struct {
PgSql *pgxpool.Pool
}
// NewApp 初始化(不阻塞)
// ======================
// 初始化
// ======================
func NewApp() (*App, error) {
cfg, err := config.Load()
if err != nil {
@@ -26,6 +26,7 @@ func NewApp() (*App, error) {
// 日志
boots.InitLogger(cfg)
// 数据库
pgsql, err := boots.InitPgsql(cfg)
if err != nil {
return nil, err
@@ -41,30 +42,10 @@ func NewApp() (*App, error) {
}, nil
}
// Run 启动服务(阻塞)
func (a *App) Run() error {
app, err := boots.RunServer(a.Config)
if err != nil {
return err
}
// ======================
// 释放资源
// ======================
// 监听退出信号
quit := make(chan os.Signal, 1)
signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
<-quit
logger.Log.Info("shutting down server...")
if err := app.Shutdown(); err != nil {
logger.Log.Error("shutdown failed")
return err
}
return nil
}
// Close 释放资源
func (a *App) Close() {
if a.PgSql != nil {
a.PgSql.Close()
@@ -1,32 +1,30 @@
package boots
package bootstrap
import (
"allapp-go/internal/config"
"allapp-go/internal/middleware"
"allapp-go/internal/router"
"allapp-go/pkg/logger"
"fmt"
"github.com/gofiber/fiber/v3"
"github.com/gofiber/fiber/v3/middleware/requestid"
)
func RunServer(cfg *config.Config) (*fiber.App, error) {
func RunServer(cfg *config.Config) error {
app := fiber.New()
// ===== middleware =====
app.Use(requestid.New())
// TODO: 你可以加 logger middleware / recover
app.Use(middleware.Logger())
// ===== router =====
router.Setup(app)
addr := fmt.Sprintf(":%d", cfg.App.Port)
go func() {
if err := app.Listen(addr); err != nil {
panic(err)
}
}()
logger.Log.Info("服务启动")
return app, nil
// ❗ 关键:直接阻塞
return app.Listen(addr)
}
@@ -0,0 +1,35 @@
package middleware
import (
"allapp-go/pkg/logger"
"time"
"github.com/gofiber/fiber/v3"
"go.uber.org/zap"
)
func Logger() fiber.Handler {
return func(c fiber.Ctx) error {
traceID := c.RequestID()
logger.SetTraceID(c, traceID)
start := time.Now()
err := c.Next()
// ✅ 计算耗时
cost := time.Since(start)
log := logger.FromCtx(c.Context())
log.Info("HTTP 请求",
zap.String("method", c.Method()),
zap.String("path", c.Path()),
zap.Int("status", c.Response().StatusCode()),
zap.String("ip", c.IP()),
zap.String("duration", cost.String()),
)
return err
}
}
@@ -1,12 +1,18 @@
package router
import (
"allapp-go/pkg/logger"
"github.com/gofiber/fiber/v3"
)
func Setup(app *fiber.App) {
// 健康检查
app.Get("/ping", func(c fiber.Ctx) error {
log := logger.FromCtx(c)
log.Info("测试")
return c.SendString("pong")
})