ASP.NET CORE 和 WEB API:审核跟踪或用户活动日志记录

Avi*_*i-B 5 logging filter audit-trail asp.net-web-api asp.net-core

我使用创建了 UserActivity 日志记录或审核跟踪ServiceFilter。我无法使用操作过滤器,因为我需要传递依赖项。

我成功记录了用户的活动。

public class ActivityLog : ActionFilterAttribute
{

    private ILogUserActivityService _service;

    //injecting specified service to insert the log in database.
    public ActivityLog(ILogUserActivityService service)
    {
        _service = service;
    }


    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        // Stores the Request in an Accessible object
        var request = filterContext.HttpContext.Request;
        // Generate the log of user activity

        LogUserActivity log = new LogUserActivity()
        {
            // Username. shall be changed to UserId later afteter Auth management.
            UserName = filterContext.HttpContext.User.Identity.Name ?? "Anonymous",
            // The IP Address of the Request
            IpAddress = request.HttpContext.Connection.RemoteIpAddress.ToString(),
            // The URL that was accessed
            AreaAccessed = Microsoft.AspNetCore.Http.Extensions.UriHelper.GetDisplayUrl(request),
            // Creates Timestamp
            TimeStamp = DateTime.Now
        };

          //saves the log to database
        _service.SaveLog(log);

        // Finishes executing the Action as normal 
        base.OnActionExecuting(filterContext);
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以[ServiceFilter(typeof(ActivityLog))]在控制器上方添加,效果非常好。

数据库记录:

在此输入图像描述

但现在我想添加更多信息。我将再添加一个名为“描述”的列,在其中我将能够输入有关用户删除的内容、他所做的更改、他添加的内容(以及一些属性)等的描述。

我期待类似Log.information(...)Serilog 的东西。那么我怎样才能实现这样的目标呢?