手把手教你AspNetCore WebApi:Serilog(日誌)
阿新 • • 發佈:2020-10-10
# 前言
小明目前已經把“待辦事項”功能實現了,API文件也搞定了,但是馬老闆說過,絕對不能讓沒有任何監控的專案上線的。
# Serilog是什麼?
在.NET使用日誌框架第一時間會想到NLog或是Log4Net,Serilog 是這幾年快速崛起的Log框架之一,Serilog是以Structured logging 為基礎進行設計,透過logging API 可以輕鬆的記錄應用程式中物件屬性,方便快速進行logging 內容進行查詢與分析,並將其紀錄內容透過json (可指定) 的方式輸出。
# 使用
**首先**,將Serilog.AspNetCore NuGet軟體包安裝到您的應用程式中。
```
dotnet add package Serilog.AspNetCore
```
**接下來**,在應用程式的Program.cs檔案中,首先配置Serilog。
```
public static void Main(string[] args)
{
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.MinimumLevel.Override("Microsoft", LogEventLevel.Information)
.Enrich.FromLogContext()
.WriteTo.Console()
.CreateLogger();
try
{
Log.Information("啟動主機");
CreateHostBuilder(args).Build().Run();
}
catch (Exception ex)
{
Log.Fatal(ex, "主機意外終止");
}
finally
{
Log.CloseAndFlush();
}
}
```
**然後**,新增UseSerilog()到中的通用主機CreateHostBuilder()。
```
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseSerilog() // <-新增此行
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.Us