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);
}
}
}