(七)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日誌:
//github.com/NLog/NLog/wiki/Getting-started-with-ASP.NET-Core-5
//www.cnblogs.com/tinys-top/p/12002673.html
異常處理
//www.cnblogs.com/lucky_hu/p/12444832.html
//www.cnblogs.com/dotnet261010/p/13193124.html

Tags: