errorHandler.go 1.0 KB

12345678910111213141516171819202122232425262728293031323334
  1. package middleware
  2. import (
  3. . "bp.jydev.jianyu360.cn/BaseService/gateway/common/gatecode"
  4. "bp.jydev.jianyu360.cn/BaseService/gateway/core/logs"
  5. "github.com/gogf/gf/v2/errors/gcode"
  6. "github.com/gogf/gf/v2/errors/gerror"
  7. "github.com/gogf/gf/v2/net/ghttp"
  8. "github.com/gogf/gf/v2/net/gtrace"
  9. )
  10. // ErrorHandler 统一异常拦截、提醒,及日志打印中间件
  11. func ErrorHandler(r *ghttp.Request) {
  12. r.Middleware.Next()
  13. _, span := gtrace.NewSpan(r.Context(), "ErrorHandler")
  14. defer span.End()
  15. // 程序异常信息处理
  16. err := r.GetError()
  17. if err != nil {
  18. gCode := gerror.Code(err)
  19. if gCode == gcode.CodeNil { // 非定义异常
  20. gCode = gcode.New(int(OTHER_ERR_UNDEFINED), OTHER_ERR_UNDEFINED.String(), err.Error())
  21. err = gerror.NewCode(gCode, "非定义异常")
  22. }
  23. // 返回固定的友好信息
  24. r.Response.ClearBuffer()
  25. r.Response.WriteJson(map[string]interface{}{
  26. "error_code": gCode.Code(),
  27. "error_msg": gCode.Message(),
  28. })
  29. }
  30. // 记录到日志文件并通知
  31. go logs.GateWayServerLog.RecordLogAndNotice(r, err)
  32. }