Using Serilog + Seq with Minimal API in NET 7

Using Serilog + Seq with Minimal API in NET 7

Nhân dịp Microsoft tung ra con hàng .NET 7, nên mình update lại cái project cũ lên .NET 7, sẵn configure lại Serilog cho nó đẩy data ra seq cho dễ đọc.

Sample sử dụng NET 7 với minial api, cũng khá là hay ho.

Đầu tiên dựng sẵn cái server seq log bằng Docker

docker run --name seqlogger -d -p 5341:5341 -p 5342:80 -e ACCEPT_EULA=Y datalust/seq

Tiếp theo tạo một ứng dụng net core đơn giản

donet new web -o AntCommerce.Module.Order

OK đã xong, cái app đơn giản.

Add thêm đồ chơi liên quan Serilog vào app

dotnet add package Serilog.AspNetCore
dotnet add package Serilog.Enrichers.Environment
dotnet add package Serilog.Exceptions
dotnet add package Serilog.Extensions.Logging
dotnet add package Serilog.Sinks.Seq

Chúng ta có 2 cách để bắt sử dụng Serilog. Cấu hình bằng code và appSettings.json

Sử dụng code. Edit trong file Program.cs

builder.Host.UseSerilog();
Log.Logger = new LoggerConfiguration()
                .MinimumLevel.Information()
                .Enrich.FromLogContext()
                .Enrich.WithExceptionDetails()
                .Enrich.WithMachineName()
                .WriteTo.Console()
                .WriteTo.Seq("http://localhost:5341", Serilog.Events.LogEventLevel.Information)
                .CreateLogger();

Sử dụng appSettings.json. Edit trong file Program.cs

builder.Host.UseSerilog((context, loggerConfig) 
    => loggerConfig.ReadFrom.Configuration(context.Configuration));

Thêm vào file appsettings.json

  "Serilog": {
    "MinimumLevel": {
      "Default": "Debug",
      "Override": {
        "Microsoft": "Information",
        "System": "Information",
        "Microsoft.EntityFrameworkCore.Database.Command": "Information"
      }
    },
    "WriteTo": [
      {
        "Name": "Console"
      },
      {
        "Name": "Seq",
        "Application": "Order API",
        "Args": { "serverUrl": "http://localhost:5341" }
        }
    ],
    "Enrich": [  
      "FromLogContext",
      "WithMachineName",
      "WithProcessId",
      "WithThreadId",
      "WithMachineEnvironmentName",
      "WithExceptionDetails"
    ],
    "Properties": {
      "Application": "Order API"
    }
  }

Bắt đầu sử dụng

Tận hưởng thành quả

Chúc các bạn vui vẻ, happy coding.

Source code: https://github.com/tuanitpro/AntCommerce