本文將介紹如何爲 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