From 64862cd6345a459dd9ec7ecd0d9afc279e465590 Mon Sep 17 00:00:00 2001 From: CaIon <1808837298@qq.com> Date: Sun, 7 Jan 2024 22:25:03 +0800 Subject: [PATCH] fix: recover panic --- main.go | 10 +++++++++- middleware/recover.go | 4 ++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/main.go b/main.go index 91ab65b..3675d62 100644 --- a/main.go +++ b/main.go @@ -104,7 +104,15 @@ func main() { // Initialize HTTP server server := gin.New() - server.Use(gin.Recovery()) + server.Use(gin.CustomRecovery(func(c *gin.Context, err any) { + common.SysError(fmt.Sprintf("panic detected: %v", err)) + c.JSON(http.StatusInternalServerError, gin.H{ + "error": gin.H{ + "message": fmt.Sprintf("Panic detected, error: %v. Please submit a issue here: https://github.com/Calcium-Ion/new-api", err), + "type": "new_api_panic", + }, + }) + })) // This will cause SSE not to work!!! //server.Use(gzip.Gzip(gzip.DefaultCompression)) server.Use(middleware.RequestId()) diff --git a/middleware/recover.go b/middleware/recover.go index 8338a51..51fc719 100644 --- a/middleware/recover.go +++ b/middleware/recover.go @@ -16,8 +16,8 @@ func RelayPanicRecover() gin.HandlerFunc { common.SysError(fmt.Sprintf("stacktrace from panic: %s", string(debug.Stack()))) c.JSON(http.StatusInternalServerError, gin.H{ "error": gin.H{ - "message": fmt.Sprintf("Panic detected, error: %v. Please submit a issue here: https://github.com/songquanpeng/one-api", err), - "type": "one_api_panic", + "message": fmt.Sprintf("Panic detected, error: %v. Please submit a issue here: https://github.com/Calcium-Ion/new-api", err), + "type": "new_api_panic", }, }) c.Abort()