using Microsoft.AspNetCore.Mvc.Abstractions; using Microsoft.AspNetCore.Mvc.Filters; using Microsoft.Extensions.DependencyInjection; using System; using System.Collections.Generic; using System.Linq; using System.Security.Claims; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Controllers; using Newtonsoft.Json; namespace wms.api.Filter { /// /// 日志 /// public class LogFilter : ActionFilterAttribute { public override void OnActionExecuting(ActionExecutingContext context) { ILogger _logUtil = context.HttpContext.RequestServices.GetRequiredService>(); var requestParam = context.ActionArguments; object methodname = ""; var method = context.ActionDescriptor.DisplayName; var controllerActionDescriptor = context.ActionDescriptor as ControllerActionDescriptor; var actionName = controllerActionDescriptor.ActionName; if (!actionName.StartsWith("Get")) { if (actionName == "I_WCS_PutTaskStep" || actionName == "I_WCS_PutDevInfo" || actionName == "ExecuteJob" || actionName == "StartJob") { //_logUtil.Debug(method + "请求参数:" + JilH.JilToJson(requestParam)); } else { _logUtil.LogInformation(method + context.HttpContext.Connection.RemoteIpAddress.ToString()+ "请求参数:{@requestParam}",requestParam); } } base.OnActionExecuting(context); } public override void OnActionExecuted(ActionExecutedContext context) { string resContent = ""; if (context.Result is ObjectResult result) resContent = JsonConvert.SerializeObject(result.Value); ILogger _logUtil = context.HttpContext.RequestServices.GetRequiredService>(); var controllerActionDescriptor = context.ActionDescriptor as ControllerActionDescriptor; var actionName = controllerActionDescriptor.ActionName; if (!actionName.StartsWith("Get")) { if (actionName == "I_WCS_PutTaskStep" || actionName == "I_WCS_PutDevInfo" || actionName == "ExecuteJob" || actionName == "StartJob") { //_logUtil.Debug(context.ActionDescriptor.DisplayName + "响应结果:" + resContent.JilToJson()); } else { _logUtil.LogInformation(context.ActionDescriptor.DisplayName + "响应结果:{@resContent}" , resContent); } } base.OnActionExecuted(context); } public override Task OnResultExecutionAsync(ResultExecutingContext context, ResultExecutionDelegate next) { return base.OnResultExecutionAsync(context, next); } } }