爲 ASPNETCORE 7 項目添加 Serilog

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章