本文將介紹如何為 ASP.NET Core 專案新增 Serilog。
新增 Serilog
首先,我們需要在專案中新增 Serilog 的 NuGet 包。
dotnet add package Serilog.AspNetCore
修改 Program.cs
在 Program.cs 中,新增 Serilog 的配置。
using Serilog;
Log.Logger = new LoggerConfiguration()
.WriteTo.Console()
.CreateLogger();
try
{
Log.Information("Starting web application");
var builder = WebApplication.CreateBuilder(args);
builder.Host.UseSerilog(); // <-- Add this line
var app = builder.Build();
app.MapGet("/", () => "Hello World!");
app.Run();
}
catch (Exception ex)
{
Log.Fatal(ex, "Application terminated unexpectedly");
}
finally
{
Log.CloseAndFlush();
}
這段程式碼中,我們使用 Log.Logger
建立了一個 Serilog 的日誌記錄器。然後,我們使用 Log.Information
記錄了一條日誌。在 CreateHostBuilder
方法中,我們使用 builder.Host.UseSerilog()
將 Serilog 配置到主機中。
這裡的 Try/Catch 語句是為了確保在應用程式退出時,日誌記錄器能夠正確關閉。
移除預設的日誌記錄器
我們可以移除 appsetting.json 中的日誌記錄器配置,僅僅保留 Serilog 的配置。
{
"Serilog": {
"Using": ["Serilog.Sinks.Console", "Serilog.Sinks.File"],
"MinimumLevel": "Debug",
"WriteTo": [{ "Name": "Console" }],
"Enrich": ["FromLogContext", "WithMachineName", "WithThreadId"]
}
}
執行應用程式
執行應用程式,我們可以看到控制檯中輸出了日誌。
[22:14:44.646 DBG] RouteCollection.RouteAsync
Routes:
Microsoft.AspNet.Mvc.Routing.AttributeRoute
{controller=Home}/{action=Index}/{id?}
Handled? True
[22:14:44.647 DBG] RouterMiddleware.Invoke
Handled? True
[22:14:45.706 DBG] /lib/jquery/jquery.js not modified
[22:14:45.706 DBG] /css/site.css not modified
[22:14:45.741 DBG] Handled. Status code: 304 File: /css/site.css
記錄日誌
記錄日誌和之前的 ASP.NET Core 專案一樣,我們可以使用 ILogger
介面。
public class HomeController : Controller
{
private readonly ILogger<HomeController> _logger;
public HomeController(ILogger<HomeController> logger)
{
_logger = logger;
}
public IActionResult Index()
{
_logger.LogInformation("Hello World!");
return View();
}
}
總結
在本文中,我們介紹瞭如何為 ASP.NET Core 專案新增 Serilog。
參考資料
- Serilog.AspNetCore[1]
- Serilog.Settings.Configuration[2]
- 本文作者: newbe36524
- 本文連結: https://www.newbe.pro/ChatAI/0x014-Intro-serilog-into-aspnet-core-7/
- 版權宣告: 本部落格所有文章除特別宣告外,均採用 BY-NC-SA 許可協議。轉載請註明出處!
參考資料
[1]Serilog.AspNetCore: https://www.nuget.org/packages/Serilog.AspNetCore/
[2]Serilog.Settings.Configuration: https://github.com/serilog/serilog-settings-configuration