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