zoukankan      html  css  js  c++  java
  • Core + Vue 后台管理基础框架6——业务日志

    1、前言

      上一篇,我们讲了审计日志,重点是重点业务表的审计字段。还有一种系统审计,就是重点业务对象的改动记录,是以审计日志表中的记录形式存在的。这种审计记录一般需要精确定位到某个终结点,最合适的实现方式就是操作过滤器。

    2、实现

      自定义操作过滤器:

    public class LogAttribute : ActionFilterAttribute
        {
            public string LogName { get; private set; }
    
            public LogAttribute(string logName)
            {
                this.LogName = logName;
            }
    
            public override async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
            {
                await base.OnActionExecutionAsync(context, next);
    
                var user = context.HttpContext.RequestServices.GetService<CurrentUser>();
                var log = new SysOperationLogDto
                {
                    ClassName = context.Controller.ToString(),
                    CreateTime = DateTime.Now,
                    LogName = this.LogName,
                    LogType = "业务日志",
                    Method = ((Controllers.ControllerActionDescriptor)context.ActionDescriptor).ActionName,
                    Message = JsonSerializer.Serialize(context.ActionArguments),
                    Succeed = "成功",
                    UserId = user.ID
                };
    
                var logService = context.HttpContext.RequestServices.GetService<ILogService>();
                await logService.AppendOperationLog(log);
            }
        }

      基本思路很简单,调用控制器终结点方法时,记录操作日志,操作日志中主要包含控制器名称,方法名称,调用入参等信息。

  • 相关阅读:
    LeetCode 461. Hamming Distance
    LeetCode 442. Find All Duplicates in an Array
    LeetCode 448. Find All Numbers Disappeared in an Array
    LeetCode Find the Difference
    LeetCode 415. Add Strings
    LeetCode 445. Add Two Numbers II
    LeetCode 438. Find All Anagrams in a String
    LeetCode 463. Island Perimeter
    LeetCode 362. Design Hit Counter
    LeetCode 359. Logger Rate Limiter
  • 原文地址:https://www.cnblogs.com/guokun/p/12536488.html
Copyright © 2011-2022 走看看