• 循序渐进VUE+Element 前端应用开发(31)--- 系统的日志管理,包括登录日志、接口访问日志、实体变化历史日志(转载)


    原文地址

    https://www.cnblogs.com/wuhuacong/p/14230493.html

    在一个系统的权限管理模块中,一般都需要跟踪一些具体的日志,ABP框架的系统的日志管理,包括登录日志、接口访问日志、实体变化历史日志,本篇随笔介绍ABP框架中这些日志的管理和界面处理。

    1、系统登录日志

    在系统每次登录的时候,我们需要记录具体的登录信息,这个一般是系统最基础的日志管理。

    ABP框架提供基础的登录日志管理,用户在进行登陆鉴权的时候,会自动记录对应的日志,存储在记录表AbpUserLoginAttempts中,我们只需要把它提取出来进行展示即可。

    我们在Vue前端,定义BaseApi类,然后继承它实现基础的接口即可。

    列表展示的Vue端的JS逻辑代码如下所示。

    复制代码
        getlist() { // 列表数据获取
          var param = { // 构造常规的分页查询条件
            SkipCount: (this.pageinfo.pageindex - 1) * this.pageinfo.pagesize,
            MaxResultCount: this.pageinfo.pagesize,
            // 过滤条件
            UserNameOrEmailAddress: this.searchForm.UserNameOrEmailAddress
          };
          // 使用日期范围选择控件,在查询对象增加开始日期CreationTimeStart、结束日期CreationTimeEnd
          this.addDateRange(param, this.searchForm.creationTime)
    
          // 获取产品列表,绑定到模型上,并修改分页数量
          this.listLoading = true
          loginlog.GetAll(param).then(data => {
            this.list = data.result.items
            this.pageinfo.total = data.result.totalCount
            this.listLoading = false
          })
        },
    复制代码

    2、接口访问日志

    ABP框架是一个后端的Web API框架,因此需要跟踪每个接口的具体访问,包括具体的请求参数和结果等信息,一般我们对接口进行跟踪和优化管理等等。

    ABP框架的接口访问日志,也是系统基础提供的记录日志,它在每次系统接口被调用的时候拦截记录,记录信息存储在AbpAuditLogs中,同样我们只需要提取出来进行展示即可。

    具体的一条接口访问日志查看界面如下所示。

    接口访问日志,也就是审计日志的前端调用对象和登录日志的处理类似,只是根据需要增加一些实现的接口。

      同样界面的列表获取展示逻辑JS代码如下所示。

    复制代码
        getlist() { // 列表数据获取
          var param = { // 构造常规的分页查询条件
            SkipCount: (this.pageinfo.pageindex - 1) * this.pageinfo.pagesize,
            MaxResultCount: this.pageinfo.pagesize,
            // 过滤条件
            UserNameOrEmailAddress: this.searchForm.UserNameOrEmailAddress
          };
          // 使用日期范围选择控件,在查询对象增加开始日期CreationTimeStart、结束日期CreationTimeEnd
          this.addDateRange(param, this.searchForm.creationTime)
    
          // 获取产品列表,绑定到模型上,并修改分页数量
          this.listLoading = true
          auditlog.GetAll(param).then(data => {
            this.list = data.result.items
            this.pageinfo.total = data.result.totalCount
            this.listLoading = false
          })
        },
    复制代码

    3、实体修改历史日志

    除了上面两种日志外,还有一种是在数据对象发生变化的时候,进行的记录,叫做实体修改(变化)历史记录,记录存放在表AbpEntityChanges、AbpEntityChangeSets和AbpEntityPropertyChanges中。

    实体修改历史日志如下界面所示。

    打开可以详细查看实体类的属性变化列表,如下界面所示。

    实体修改历史记录,系统默认是关闭,需要的话可以在项目模块的配置中打开,如下代码所示即可。

                //配置实体修改历史
                Configuration.EntityHistory.IsEnabled = Constants.EntityHistoryEnabled;
                //使用基类实现IFullAudited的实体类,记录修改历史
                Configuration.EntityHistory.Selectors.Add(new NamedTypeSelector("IFullAudited",
                        type => typeof(IFullAudited).IsAssignableFrom(type)));

    以上这些类型的日志,都是ABP框架基础接口提供的拦截记录日志,我们只需要根据具体的对象获取记录进行展示即可,非常方便。

    主要研究技术:代码生成工具、会员管理系统、客户关系管理软件、病人资料管理软件、Visio二次开发、酒店管理系统、仓库管理系统等共享软件开发
    专注于Winform开发框架/混合式开发框架Web开发框架Bootstrap开发框架微信门户开发框架的研究及应用
      转载请注明出处:
    撰写人:伍华聪  http://www.iqidi.com 
  • 相关阅读:
    shell脚本一行太长,使用\换行
    Public Key Retrieval is not allowed
    Python学习:基础练习题
    python教程:一个 list 使用 for 遍历,边循环边删除的问题
    python学习:集合教程
    python中5个带key的内置函数
    python学习:三目运算符
    Python教程:list.sort()和函数sorted(list)
    Python3教程:加密模块hashlib
    vmware虚拟机运行XP系统速度很慢的解决方案
  • 原文地址:https://www.cnblogs.com/zhboke/p/14234113.html
Copyright © 2020-2023  润新知