48 lines
1.0 KiB
Go
48 lines
1.0 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"net/http"
|
|
"time"
|
|
|
|
"go.uber.org/zap"
|
|
"joylink.club/bj-rtsts-server/db/dbquery"
|
|
|
|
ginzap "github.com/gin-contrib/zap"
|
|
"github.com/gin-gonic/gin"
|
|
"joylink.club/bj-rtsts-server/config"
|
|
"joylink.club/bj-rtsts-server/db"
|
|
"joylink.club/bj-rtsts-server/logger"
|
|
)
|
|
|
|
func InitServer() *gin.Engine {
|
|
config.LoadConfig()
|
|
fmt.Println("数据源配置为:", config.Config.Datasource.Dsn)
|
|
err := logger.InitLogger()
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
err = db.InitDb()
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
dbquery.SetDefault(db.DB)
|
|
|
|
engine := gin.New()
|
|
engine.Use(ginzap.Ginzap(zap.L(), time.DateTime, false))
|
|
// gin panic 异常处理,默认处理为 engine.Use(ginzap.RecoveryWithZap(zap.L(), true))
|
|
engine.Use(ginzap.CustomRecoveryWithZap(zap.L(), true, func(c *gin.Context, e interface{}) {
|
|
switch e.(type) {
|
|
case error:
|
|
err := e.(error)
|
|
c.JSON(http.StatusInternalServerError, err.Error())
|
|
default:
|
|
c.JSON(http.StatusInternalServerError, e)
|
|
}
|
|
c.Writer.WriteHeaderNow()
|
|
c.Abort()
|
|
}))
|
|
return engine
|
|
}
|