LogFilter.cs 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. using Microsoft.AspNetCore.Mvc.Abstractions;
  2. using Microsoft.AspNetCore.Mvc.Filters;
  3. using Microsoft.Extensions.DependencyInjection;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Security.Claims;
  8. using System.Threading.Tasks;
  9. using Microsoft.AspNetCore.Mvc;
  10. using Microsoft.AspNetCore.Mvc.Controllers;
  11. using Newtonsoft.Json;
  12. namespace wms.api.Filter
  13. {
  14. /// <summary>
  15. /// 日志
  16. /// </summary>
  17. public class LogFilter : ActionFilterAttribute
  18. {
  19. public override void OnActionExecuting(ActionExecutingContext context)
  20. {
  21. ILogger _logUtil = context.HttpContext.RequestServices.GetRequiredService<ILogger<LogFilter>>();
  22. var requestParam = context.ActionArguments;
  23. object methodname = "";
  24. var method = context.ActionDescriptor.DisplayName;
  25. var controllerActionDescriptor = context.ActionDescriptor as ControllerActionDescriptor;
  26. var actionName = controllerActionDescriptor.ActionName;
  27. if (!actionName.StartsWith("Get"))
  28. {
  29. if (actionName == "I_WCS_PutTaskStep" || actionName == "I_WCS_PutDevInfo" || actionName == "ExecuteJob" || actionName == "StartJob")
  30. {
  31. //_logUtil.Debug(method + "请求参数:" + JilH.JilToJson(requestParam));
  32. }
  33. else
  34. {
  35. _logUtil.LogInformation(method + context.HttpContext.Connection.RemoteIpAddress.ToString()+ "请求参数:{@requestParam}",requestParam);
  36. }
  37. }
  38. base.OnActionExecuting(context);
  39. }
  40. public override void OnActionExecuted(ActionExecutedContext context)
  41. {
  42. string resContent = "";
  43. if (context.Result is ObjectResult result)
  44. resContent = JsonConvert.SerializeObject(result.Value);
  45. ILogger _logUtil = context.HttpContext.RequestServices.GetRequiredService<ILogger<LogFilter>>();
  46. var controllerActionDescriptor = context.ActionDescriptor as ControllerActionDescriptor;
  47. var actionName = controllerActionDescriptor.ActionName;
  48. if (!actionName.StartsWith("Get"))
  49. {
  50. if (actionName == "I_WCS_PutTaskStep" || actionName == "I_WCS_PutDevInfo" || actionName == "ExecuteJob" || actionName == "StartJob")
  51. {
  52. //_logUtil.Debug(context.ActionDescriptor.DisplayName + "响应结果:" + resContent.JilToJson());
  53. }
  54. else
  55. {
  56. _logUtil.LogInformation(context.ActionDescriptor.DisplayName + "响应结果:{@resContent}" , resContent);
  57. }
  58. }
  59. base.OnActionExecuted(context);
  60. }
  61. public override Task OnResultExecutionAsync(ResultExecutingContext context, ResultExecutionDelegate next)
  62. {
  63. return base.OnResultExecutionAsync(context, next);
  64. }
  65. }
  66. }