(七)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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM