Let the developer use their own logger to Recovery middleware
Before
func CustomRecoveryWithWriter(out io.Writer, handle RecoveryFunc) HandlerFunc {
var logger *log.Logger
After
func CustomRecoveryWithWriter(out io.Writer, logger *log.Logger, handle RecoveryFunc) HandlerFunc {
Comment From: bbdshow
"CustomRecoveryWithWriter" is a HandlerFunc. You can use custom HandlerFunc eg: I..RecoveryWithWriter(xxx) HandlerFunc{}.
eg
// RecoveryLogger GIN Recovery logging to qelog
func RecoveryLogger() gin.HandlerFunc {
if logs.Qezap != nil {
return gin.RecoveryWithWriter(logs.Qezap.NewWriter(zap.ErrorLevel, "GIN-ERROR"))
}
return gin.Recovery()
}
func DefaultEngine(flags int) *gin.Engine {
if flags&MRelease != 0 {
gin.SetMode(gin.ReleaseMode)
}
engine := gin.New()
healthHandler(engine)
// swagger
if flags&MSwagger != 0 {
engine.GET("/docs/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
}
// middleware
if flags&MTraceId != 0 {
engine.Use(ContextWithTraceId())
}
if flags&MReqLogger != 0 {
engine.Use(ReqLogger(skipPaths...))
}
if flags&MDumpBody != 0 {
engine.Use(DumpBodyLogger(skipPaths...))
}
if flags&MRecoverLogger != 0 {
engine.Use(RecoveryLogger())
}
if flags&MPprof != 0 {
pprofHandler(engine)
}
return engine
}