(七)React Ant Design Pro + .Net5 WebApi:後端環境搭建-日誌、異常處理

冬先生發表於2022-03-16

一、日誌

日誌具有幫助開發者快速的定位問題,記錄各種資訊,配合其他分析框架使用等等功能,收集日誌的各類框架如: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

相關文章