Răsfoiți Sursa

fix:完善框架

zqbao 9 luni în urmă
părinte
comite
99cb7e291b
3 a modificat fișierele cu 89 adăugiri și 0 ștergeri
  1. 25 0
      controllers/base_common.go
  2. 21 0
      controllers/error.go
  3. 43 0
      main.go

+ 25 - 0
controllers/base_common.go

@@ -0,0 +1,25 @@
+package controllers
+
+import (
+	"eta/eta_mini_bridge/utils"
+	"net/url"
+
+	"github.com/beego/beego/v2/server/web"
+)
+
+type BaseCommonController struct {
+	web.Controller
+}
+
+func (c *BaseCommonController) Prepare() {
+	var requestBody string
+	method := c.Ctx.Input.Method()
+	if method == "GET" {
+		requestBody = c.Ctx.Request.RequestURI
+	} else {
+		requestBody, _ = url.QueryUnescape(string(c.Ctx.Input.RequestBody))
+	}
+
+	ip := c.Ctx.Input.IP()
+	utils.ApiLog.Info("uri:%s, requestBody:%s, ip:%s", c.Ctx.Input.URI(), requestBody, ip)
+}

+ 21 - 0
controllers/error.go

@@ -0,0 +1,21 @@
+package controllers
+
+import "eta/eta_mini_bridge/models"
+
+// ErrorController
+// @Description: 该控制器处理页面错误请求
+type ErrorController struct {
+	BaseCommonController
+}
+
+func (c *ErrorController) Error404() {
+	c.Data["content"] = "很抱歉您访问的地址或者方法不存在"
+	//c.TplName = "error/404.html"
+
+	br := new(models.BaseResponse).Init()
+
+	br.Msg = "您访问的资源不存在"
+	br.Ret = 404
+	c.Data["json"] = br
+	c.ServeJSON()
+}

+ 43 - 0
main.go

@@ -1,9 +1,14 @@
 package main
 
 import (
+	"eta/eta_mini_bridge/controllers"
 	_ "eta/eta_mini_bridge/routers"
+	"fmt"
+	"runtime"
 
+	"github.com/beego/beego/v2/core/logs"
 	"github.com/beego/beego/v2/server/web"
+	"github.com/beego/beego/v2/server/web/context"
 )
 
 func main() {
@@ -11,5 +16,43 @@ func main() {
 		web.BConfig.WebConfig.DirectoryIndex = true
 		web.BConfig.WebConfig.StaticDir["/swagger"] = "swagger"
 	}
+
+	web.ErrorController(&controllers.ErrorController{})
+	// 内存调整
+	web.BConfig.MaxMemory = 1024 * 1024 * 128
+
+	web.BConfig.RecoverFunc = Recover
+
 	web.Run()
 }
+func Recover(ctx *context.Context, conf *web.Config) {
+	if err := recover(); err != nil {
+		if err == web.ErrAbort {
+			return
+		}
+		if !web.BConfig.RecoverPanic {
+			panic(err)
+		}
+		stack := ""
+		msg := fmt.Sprintf("The request url is  %v", ctx.Input.URL())
+		stack += msg + "</br>"
+		logs.Critical(msg)
+		msg = fmt.Sprintf("The request data is %v", string(ctx.Input.RequestBody))
+		stack += msg + "</br>"
+		logs.Critical(msg)
+		msg = fmt.Sprintf("Handler crashed with error %v", err)
+		stack += msg + "</br>"
+		logs.Critical(msg)
+		for i := 1; ; i++ {
+			_, file, line, ok := runtime.Caller(i)
+			if !ok {
+				break
+			}
+			logs.Critical(fmt.Sprintf("%s:%d", file, line))
+			stack = stack + fmt.Sprintln(fmt.Sprintf("%s:%d</br>", file, line))
+		}
+		//go utils.SendEmail(utils.APPNAME+"崩了"+time.Now().Format("2006-01-02 15:04:05"), stack, utils.EmailSendToUsers)
+		// go alarm_msg.SendAlarmMsg(utils.APPNAME+"崩了"+time.Now().Format("2006-01-02 15:04:05")+"<br/>"+stack, 3)
+	}
+	return
+}