ExceptionFilter.cs 1.3 KB

12345678910111213141516171819202122232425262728293031
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using Microsoft.AspNetCore.Mvc.Filters;
  5. using Microsoft.AspNetCore.Mvc;
  6. using Cksoft.Unity.Log4NetConfig;
  7. using NLog;
  8. namespace DllEapCommon.Filters
  9. {
  10. public class ExceptionFilter : ExceptionFilterAttribute
  11. {
  12. private Logger logger;
  13. public override void OnException(ExceptionContext context)
  14. {
  15. var controllerName = context.ActionDescriptor.RouteValues["controller"]; // 控制器名称
  16. var actionName = context.ActionDescriptor.RouteValues["action"]; // 方法名称
  17. string errorinfo = $@"/{controllerName}/{actionName}请求异常:{context.Exception.Message}/{context.Exception.StackTrace}";
  18. var userCode = context.HttpContext.Request.Headers["usercode"];
  19. this.logger = LogManager.GetLogger(controllerName);
  20. var eventInfo = LogHelper<ExceptionFilterFor>.CreateLogEventInfo(LogLevel.Error,
  21. errorinfo, "系统日志", userCode);
  22. LogHelper<ExceptionFilterFor>.LogError(context.Exception.Message, "系统日志", userCode);
  23. // logger.Log(eventInfo);
  24. context.Result = new JsonResult(new { code = 500, msg = errorinfo });
  25. context.ExceptionHandled = true;
  26. }
  27. }
  28. }