(七)React Ant Design Pro + .Net5 WebApi:后端环境搭建-日志、异常处理

一、日志#

日志具有帮助开发者快速的定位问题,记录各种信息,配合其他分析框架使用等等功能,收集日志的各类框架如:Log4net、NLog、Exceptionless、Serilog等等,百度或园子里介绍及对比文章不胜枚举,此不赘述。易用为主,选择NLog先集成,方便后面演示使用。

1、安装 NLog.Web.AspNetCore#

2、新建 nlog.config,只改了输出路径。(配置和变量介绍参考最后链接,就不贴代码了)#

3、注入到框架中,测试输出效果#

二、异常处理#

异常处理分为两种,一种是过滤器,一种是中间件。过滤器只能捕获Action以内的异常,而中间件可以捕获全局的异常,也可以只用中间件捕获全局异常,但通常是有所区分的。

1、过滤器#

(1)新建一个异常过滤器 ExceptionFilter,注入到框架中#

(2)ExceptionFilter 继承 IAsyncExceptionFilter 接口,代码如下:#

public class ExceptionFilter : IAsyncExceptionFilter
{
    private readonly ILogger<ExceptionFilter> _logger;
    public ExceptionFilter(ILogger<ExceptionFilter> logger)
    {
        _logger = logger;
    }
    public Task OnExceptionAsync(ExceptionContext context)
    {
        if (context.ExceptionHandled == false)
        {
            string msg = context.Exception.Message;
            context.Result = new ContentResult
            {
                Content = msg,
                StatusCode = 200,
                ContentType = "application/json"
            };
            _logger.LogError("ExceptionFilter:" + msg);
        }
        context.ExceptionHandled = true; //设置异常已处理了,否则会被异常中间件再次捕获。
        return Task.CompletedTask;
    }
}

(3)在插入接口直接抛出异常,swagger调用接口测试,输出日志#

2、中间件#

(1)一定要按顺序注册且异常捕获最先#

(2)启动项目,捕获异常#

三、前人栽树,后人乘凉#

Nlog日志:
https://github.com/NLog/NLog/wiki/Getting-started-with-ASP.NET-Core-5
https://www.cnblogs.com/tinys-top/p/12002673.html
异常处理
https://www.cnblogs.com/lucky_hu/p/12444832.html
https://www.cnblogs.com/dotnet261010/p/13193124.html

posted @   冬先生  阅读(698)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤
点击右上角即可分享
微信分享提示
主题色彩