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