1. 程式人生 > 其它 >.netcore2.1 封裝全域性列印異常資訊過濾器

.netcore2.1 封裝全域性列印異常資訊過濾器

  • 設定異常資訊攔截
 public class GlobalExceptionFilter : IExceptionFilter
    {
        readonly ILogger _logger;

        public GlobalExceptionFilter(ILogger<GlobalExceptionFilter> logger)
        {
            _logger = logger;
        }

        public void OnException(ExceptionContext context)
        {
            _logger.LogError(context.Exception, context.Exception.Message);
            if (context.Exception is ShowMessageException)
            {
                context.Result = new JsonResult(context.Exception.Message);
            }
            else
            {
              
                context.Result = new JsonResult("伺服器異常");
            }


            context.ExceptionHandled = true;
        }
    }
  • 定義異常類
   public class ShowMessageException : Exception
    {
        public ShowMessageException(string message) : base(message)
        { }
    }
  • 在Startup.cs檔案中,注入服務
   public void ConfigureServices(IServiceCollection services)
        {

            //filters
            services.AddScoped<GlobalExceptionFilter>();



        }