Example #1
0
        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);
        }
Example #2
0
        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);
            }
        }