28 lines
564 B
Go
28 lines
564 B
Go
package middleware
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"0451meishiditu/backend/internal/logger"
|
|
"0451meishiditu/backend/internal/resp"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
func Recover(log *zap.Logger) gin.HandlerFunc {
|
|
return gin.CustomRecovery(func(c *gin.Context, recovered interface{}) {
|
|
log.Error("panic recovered", logger.Str("recovered", toString(recovered)))
|
|
resp.Fail(c, http.StatusInternalServerError, "internal error")
|
|
})
|
|
}
|
|
|
|
func toString(v interface{}) string {
|
|
switch t := v.(type) {
|
|
case string:
|
|
return t
|
|
default:
|
|
return "panic"
|
|
}
|
|
}
|