修复config的错误,调整记录日志中间件的获取用户id逻辑,优先从jwt里取,新增状态码不为200时发送邮件到指定邮箱功能

This commit is contained in:
SliverHorn
2020-09-22 18:45:24 +08:00
parent f8e1832172
commit 099ff42404
4 changed files with 35 additions and 4 deletions
+23 -3
View File
@@ -2,9 +2,12 @@ package middleware
import (
"bytes"
"encoding/json"
"gin-vue-admin/global"
"gin-vue-admin/model"
"gin-vue-admin/model/request"
"gin-vue-admin/service"
"gin-vue-admin/utils"
"github.com/gin-gonic/gin"
"go.uber.org/zap"
"io/ioutil"
@@ -16,6 +19,7 @@ import (
func OperationRecord() gin.HandlerFunc {
return func(c *gin.Context) {
var body []byte
var userId int
if c.Request.Method != http.MethodGet {
var err error
body, err = ioutil.ReadAll(c.Request.Body)
@@ -25,9 +29,15 @@ func OperationRecord() gin.HandlerFunc {
c.Request.Body = ioutil.NopCloser(bytes.NewBuffer(body))
}
}
userId, err := strconv.Atoi(c.Request.Header.Get("x-user-id"))
if err != nil {
userId = 0
if claims, ok := c.Get("claims"); ok {
waitUse := claims.(*request.CustomClaims)
userId = int(waitUse.ID)
}else {
id, err := strconv.Atoi(c.Request.Header.Get("x-user-id"))
if err != nil {
userId = 0
}
userId = id
}
record := model.SysOperationRecord{
Ip: c.ClientIP(),
@@ -52,6 +62,16 @@ func OperationRecord() gin.HandlerFunc {
record.Latency = latency
record.Resp = writer.body.String()
if global.GVA_CONFIG.System.ErrorToEmail {
if record.Status != 200 {
subject := record.Ip+"调用了"+record.Path+"报错了"
body, _ := json.Marshal(record)
if err := utils.ErrorToEmail(subject, string(body)); err != nil{
global.GVA_LOG.Error("ErrorToEmail Failed, err:", zap.Any("err", err))
}
}
}
if err := service.CreateSysOperationRecord(record); err != nil {
global.GVA_LOG.Error("create operation record error:", zap.Any("err", err))
}