The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

如何在現有 ASP.NET Core 專案加入 Seq 記錄提供者

我經常推薦 Seq 這套記錄伺服器(Log Server),如果要將 ASP.NET Core 的 Log 全部送到 Seq 儲存的話,其實非常簡單,因為官方的 Seq.Extensions.Logging 套件預設就支援 Microsoft.Extensions.Logging 的擴充,提供一個現成的 Logging Provider 讓你很方便的將 Seq 快速加入到 ASP.NET Core 之中。這篇文章我就來說說這個設定的過程。

設定步驟

  1. 先透過 Docker 啟動一個 Seq 伺服器

    docker run --name seq -d --restart unless-stopped -e ACCEPT_EULA=Y -p 5341:80 datalust/seq:latest
    

    預設會監聽 localhost:5341

  2. 假設我們建立一個 ASP.NET Core MVC 應用程式名為 mvc1

    dotnet new mvc -n mvc1
    cd mvc1
    
  3. 在專案中加入 Seq.Extensions.Logging NuGet 套件

    dotnet add package Seq.Extensions.Logging
    
  4. Program.cs 加入 Seq 的 Log Provider

    builder.Logging.AddSeq();
    

    如果要指定 Seq 伺服器位置與 API Key 的話,也可以這樣寫:

    builder.Logging.AddSeq(serverUrl: "http://localhost:5341", apiKey: "your-api-key");
    

    如果要直接從組態進行設定,可以這樣寫:

    builder.Logging.AddSeq(builder.Configuration.GetSection("Seq"));
    

    appsettings.json 的設定值如下:

    {
      "Seq": {
        "ServerUrl": "http://localhost:5341",
        "ApiKey": "1234567890",
        "MinimumLevel": "Trace",
        "LevelOverride": {
          "Microsoft": "Warning"
        }
      }
    }
    

測試記錄到 Seq

  1. 修改 HomeController 類別,加入不同 Log Level 的紀錄

    using System.Diagnostics;
    using Microsoft.AspNetCore.Mvc;
    using mvc1.Models;
    
    namespace mvc1.Controllers;
    
    public class HomeController : Controller
    {
        private readonly ILogger<HomeController> _logger;
    
        public HomeController(ILogger<HomeController> logger)
        {
            _logger = logger;
        }
    
        public IActionResult Index()
        {
            _logger.LogTrace("Hello, world!");
            _logger.LogDebug("Hello, world!");
            _logger.LogInformation("Hello, world!");
            _logger.LogWarning("Hello, world!");
            _logger.LogError("Hello, world!");
            _logger.LogCritical("Hello, world!");
    
            return View();
        }
    }
    
  2. 調整 appsettings.Development.jsonLogging 設定

    {
      "Logging": {
        "LogLevel": {
          "Default": "Trace",
          "Microsoft.AspNetCore": "Trace"
        }
      }
    }
    
  3. 啟動網站並瀏覽首頁

    dotnet run
    
  4. 進入 Seq 首頁 ( http://localhost:5341 ) 即可看見 Log 已經被成功寫入!👍

    image

相關連結

留言評論