diff --git a/server/internal/logic/hook/access_log.go b/server/internal/logic/hook/access_log.go index 252c974..704ebce 100644 --- a/server/internal/logic/hook/access_log.go +++ b/server/internal/logic/hook/access_log.go @@ -7,11 +7,13 @@ package hook import ( + "context" "github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/v2/net/ghttp" "github.com/gogf/gf/v2/os/gtime" "hotgo/internal/library/contexts" "hotgo/internal/service" + "hotgo/utility/simple" ) // AccessLog 访问日志 @@ -29,9 +31,9 @@ func (s *sHook) AccessLog(r *ghttp.Request) { // 计算运行耗时 contexts.SetTakeUpTime(ctx, gtime.TimestampMilli()-r.EnterTime) - go func() { + simple.SafeGo(ctx, func(ctx context.Context) { if err := service.SysLog().AutoLog(ctx); err != nil { - g.Log().Info(ctx, "hook AccessLog err:", err) + g.Log().Warningf(ctx, "hook AccessLog err:%+v", err) } - }() + }) } diff --git a/server/internal/logic/hook/last_active.go b/server/internal/logic/hook/last_active.go index c3f9155..8192f96 100644 --- a/server/internal/logic/hook/last_active.go +++ b/server/internal/logic/hook/last_active.go @@ -8,6 +8,7 @@ import ( "github.com/gogf/gf/v2/os/gtime" "github.com/gogf/gf/v2/os/gtimer" "hotgo/internal/library/contexts" + "hotgo/utility/simple" "sync" "time" ) @@ -69,12 +70,15 @@ func (s *sHook) LastActive(r *ghttp.Request) { } if allow(memberId) { - _, err := g.Model("admin_member").Ctx(ctx). - Where("id", memberId). - Data(g.Map{"last_active_at": gtime.Now()}). - Update() - if err != nil { - g.Log().Warningf(ctx, "hook LastActive err:%+v, memberId:%v", err, memberId) - } + simple.SafeGo(ctx, func(ctx context.Context) { + _, err := g.Model("admin_member").Ctx(ctx). + Where("id", memberId). + WhereLT("last_active_at", gtime.Now()). + Data(g.Map{"last_active_at": gtime.Now()}). + Update() + if err != nil { + g.Log().Warningf(ctx, "hook LastActive err:%+v, memberId:%v", err, memberId) + } + }) } } diff --git a/server/internal/logic/sys/log.go b/server/internal/logic/sys/log.go index 15bb698..0ca2bec 100644 --- a/server/internal/logic/sys/log.go +++ b/server/internal/logic/sys/log.go @@ -104,29 +104,40 @@ func (s *sSysLog) RealWrite(ctx context.Context, commonLog entity.SysLog) (err e } // AutoLog 根据配置自动记录请求日志 -func (s *sSysLog) AutoLog(ctx context.Context) (err error) { - config, err := service.SysConfig().GetLoadLog(ctx) - if err != nil { - return err - } +func (s *sSysLog) AutoLog(ctx context.Context) error { + return g.Try(ctx, func(ctx context.Context) { + var err error + defer func() { + if err != nil { + panic(err) + } + }() - if !config.Switch { - return nil - } + config, err := service.SysConfig().GetLoadLog(ctx) + if err != nil { + return + } - data := s.AnalysisLog(ctx) - if ok := validate.InSliceExistStr(config.Module, data.Module); !ok { - return nil - } + if !config.Switch { + return + } - if ok := validate.InSliceExistStr(config.SkipCode, gconv.String(data.ErrorCode)); ok { - return nil - } + data := s.AnalysisLog(ctx) + if ok := validate.InSliceExistStr(config.Module, data.Module); !ok { + return + } - if config.Queue { - return queue.Push(consts.QueueLogTopic, data) - } - return s.RealWrite(ctx, data) + if ok := validate.InSliceExistStr(config.SkipCode, gconv.String(data.ErrorCode)); ok { + return + } + + if config.Queue { + err = queue.Push(consts.QueueLogTopic, data) + return + } + err = s.RealWrite(ctx, data) + return + }) } // AnalysisLog 解析日志数据 diff --git a/web/src/views/org/user/user.vue b/web/src/views/org/user/user.vue index cb6f4db..c530dfc 100644 --- a/web/src/views/org/user/user.vue +++ b/web/src/views/org/user/user.vue @@ -82,7 +82,7 @@