This commit is contained in:
2026-08-16 20:58:57 +08:00
parent a85477be80
commit a9e1f9e6f8
42 changed files with 1569 additions and 156 deletions
+2 -9
View File
@@ -1,7 +1,6 @@
package middleware
import (
"fmt"
"log/slog"
"net"
"net/http"
@@ -10,13 +9,10 @@ import (
"runtime/debug"
"strings"
"kra/internal/service"
"kra/internal/service/dto"
"github.com/gin-gonic/gin"
)
func Recovery(audit *service.AuditRecorder, logger *slog.Logger) gin.HandlerFunc {
func Recovery(logger *slog.Logger) gin.HandlerFunc {
return func(c *gin.Context) {
defer func() {
panicValue := recover()
@@ -31,12 +27,9 @@ func Recovery(audit *service.AuditRecorder, logger *slog.Logger) gin.HandlerFunc
}
}
request, _ := httputil.DumpRequest(c.Request, false)
info := fmt.Sprintf("error=%v request=%s stack=%s", panicValue, request, debug.Stack())
if logger != nil {
logger.ErrorContext(c.Request.Context(), "recovery from panic", "mod", "error", "error", panicValue, "request", string(request), "stack", string(debug.Stack()))
logger.ErrorContext(c.Request.Context(), "recovery from panic", "mod", "http", "error", panicValue, "request", string(request), "stack", string(debug.Stack()))
}
requestID, _ := c.Get("request_id")
_ = audit.CreateErrorRequest(c.Request.Context(), &dto.ErrorRecordRequest{Form: c.Request.URL.Path, Info: info, Level: "error", RequestID: stringValue(requestID), TraceID: stringValueFromContext(c, "trace_id")})
if brokenPipe {
if err, ok := panicValue.(error); ok {
_ = c.Error(err)