using System; using System.Collections.Generic; using System.Text; using Microsoft.AspNetCore.Mvc.Filters; using Microsoft.AspNetCore.Mvc; using Cksoft.Unity.Log4NetConfig; using NLog; namespace DllEapCommon.Filters { public class ExceptionFilter : ExceptionFilterAttribute { private Logger logger; public override void OnException(ExceptionContext context) { var controllerName = context.ActionDescriptor.RouteValues["controller"]; // 控制器名称 var actionName = context.ActionDescriptor.RouteValues["action"]; // 方法名称 string errorinfo = $@"/{controllerName}/{actionName}请求异常:{context.Exception.Message}/{context.Exception.StackTrace}"; var userCode = context.HttpContext.Request.Headers["usercode"]; this.logger = LogManager.GetLogger(controllerName); var eventInfo = LogHelper.CreateLogEventInfo(LogLevel.Error, errorinfo, "系统日志", userCode); LogHelper.LogError(context.Exception.Message, "系统日志", userCode); // logger.Log(eventInfo); context.Result = new JsonResult(new { code = 500, msg = errorinfo }); context.ExceptionHandled = true; } } }