本文将介绍如何为 ASP.NET Core 项目添加 Serilog。
添加 Serilog
首先,我们需要在项目中添加 Serilog 的 NuGet 包。
1
| dotnet add package Serilog.AspNetCore
|
修改 Program.cs
在 Program.cs 中,添加 Serilog 的配置。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| using Serilog;
Log.Logger = new LoggerConfiguration() .WriteTo.Console() .CreateLogger();
try { Log.Information("Starting web application");
var builder = WebApplication.CreateBuilder(args);
builder.Host.UseSerilog();
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 的配置。
1 2 3 4 5 6 7 8
| { "Serilog": { "Using": ["Serilog.Sinks.Console", "Serilog.Sinks.File"], "MinimumLevel": "Debug", "WriteTo": [{ "Name": "Console" }], "Enrich": ["FromLogContext", "WithMachineName", "WithThreadId"] } }
|
运行应用程序
运行应用程序,我们可以看到控制台中输出了日志。
1 2 3 4 5 6 7 8 9 10
| [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
接口。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| 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。
参考资料
本文采用 Chat OpenAI 辅助注水浇筑而成,如有雷同,完全有可能。