generated from pkg/go-template
fix: 整理pkg
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
bb60689055
commit
3f060be9b9
|
@ -52,9 +52,9 @@ func appInit() {
|
|||
//requestId
|
||||
app.Use(requestid.New())
|
||||
//recover
|
||||
app.Use(api.FibberRecover)
|
||||
app.Use(api.FibberRecoverHandler)
|
||||
//requestId for gorm
|
||||
app.Use(api.FibberUserCtxWithTrace)
|
||||
app.Use(api.FibberUserCtxWithTraceHandler)
|
||||
}
|
||||
|
||||
func routerInit() {
|
||||
|
|
|
@ -3,7 +3,12 @@ package api
|
|||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"github.com/gofiber/fiber/v2"
|
||||
"github.com/gofiber/fiber/v2/middleware/recover"
|
||||
ctxLogger "github.com/luizsuper/ctxLoggers"
|
||||
"go.uber.org/zap"
|
||||
"runtime"
|
||||
)
|
||||
|
||||
// FiberErrHandler fiber 错误处理的中间件
|
||||
|
@ -28,6 +33,11 @@ func FiberErrHandler(ctx *fiber.Ctx, err error) error {
|
|||
|
||||
// FibberRespHandler fiber resp的统一处理
|
||||
func FibberRespHandler(c *fiber.Ctx) error {
|
||||
err := c.Next()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if respContentType := string(c.Response().Header.ContentType()); respContentType == fiber.MIMEApplicationJSON {
|
||||
resp := Response{
|
||||
Code: 0,
|
||||
|
@ -40,22 +50,21 @@ func FibberRespHandler(c *fiber.Ctx) error {
|
|||
return c.Next()
|
||||
}
|
||||
|
||||
// FibberRecover fiberPanicRecover
|
||||
func FibberRecover(c *fiber.Ctx) error {
|
||||
if respContentType := string(c.Response().Header.ContentType()); respContentType == fiber.MIMEApplicationJSON {
|
||||
resp := Response{
|
||||
Code: 0,
|
||||
Message: "",
|
||||
Data: c.Response().Body(),
|
||||
}
|
||||
return c.JSON(resp)
|
||||
}
|
||||
|
||||
return c.Next()
|
||||
// FibberRecoverHandler fiberPanicRecover
|
||||
func FibberRecoverHandler() fiber.Handler {
|
||||
return recover.New(recover.Config{
|
||||
EnableStackTrace: true,
|
||||
StackTraceHandler: func(c *fiber.Ctx, e interface{}) {
|
||||
buf := make([]byte, 1024*1024)
|
||||
buf = buf[:runtime.Stack(buf, false)]
|
||||
fmt.Printf("panic: %v\n%s\n", e, buf)
|
||||
ctxLogger.FError(c, "panic", zap.String("", fmt.Sprintf("panic: %v\n%s\n", e, buf)))
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
// FibberUserCtxWithTrace 把fibberCtx的traceId 置入UserCtx中
|
||||
func FibberUserCtxWithTrace(c *fiber.Ctx) error {
|
||||
// FibberUserCtxWithTraceHandler 把fibberCtx的traceId 置入UserCtx中
|
||||
func FibberUserCtxWithTraceHandler(c *fiber.Ctx) error {
|
||||
c.SetUserContext(context.WithValue(context.Background(), fiber.HeaderXRequestID, c.Response().Header.Peek(fiber.HeaderXRequestID)))
|
||||
return c.Next()
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue