public async Task LogAsync(ActionExecutingContext context, ActionExecutionDelegate next) { var sw = new Stopwatch(); sw.Start(); dynamic actionResult = (await next()).Result; sw.Stop(); //操作参数 //var args = JsonConvert.SerializeObject(context.ActionArguments); //操作结果 //var result = JsonConvert.SerializeObject(actionResult?.Value); var res = actionResult?.Value as IResponseOutput; var input = new OprationLogAddInput { ApiMethod = context.HttpContext.Request.Method.ToLower(), ApiPath = context.ActionDescriptor.AttributeRouteInfo.Template.ToLower(), ElapsedMilliseconds = sw.ElapsedMilliseconds, Status = res?.Success, Msg = res?.Msg }; input.ApiLabel = _apiHelper.GetApis().FirstOrDefault(a => a.Path == input.ApiPath)?.Label; await _oprationLogService.AddAsync(input); }
public async Task LogAsync(ActionExecutingContext context, ActionExecutionDelegate next) { var sw = new Stopwatch(); sw.Start(); var actionExecutedContext = await next(); sw.Stop(); //操作参数 //var args = JsonConvert.SerializeObject(context.ActionArguments); //操作结果 //var result = JsonConvert.SerializeObject(actionResult?.Value); try { var input = new OprationLogAddInput { ApiMethod = context.HttpContext.Request.Method.ToLower(), ApiPath = context.ActionDescriptor.AttributeRouteInfo.Template.ToLower(), ElapsedMilliseconds = sw.ElapsedMilliseconds }; if (actionExecutedContext.Result is ObjectResult result && result.Value is IResponseOutput res) { input.Status = res.Success; input.Msg = res.Msg; } input.ApiLabel = _apiHelper.GetApis().FirstOrDefault(a => a.Path == input.ApiPath)?.Label; await _oprationLogService.AddAsync(input); } catch (Exception ex) { _logger.LogError("操作日志插入异常:{@ex}", ex); } }