Section 5 of 6

Serilog Integration

🎯 What You'll Learn

  • What is Serilog
  • Installing Serilog
  • Configuring Serilog
  • Serilog sinks
  • Enrichers

What is Serilog?

Serilog is a popular third-party logging library with excellent structured logging support and many sinks (destinations) for writing logs.

Installing Serilog

Install Packages Bash
dotnet add package Serilog.AspNetCore
dotnet add package Serilog.Sinks.Console
dotnet add package Serilog.Sinks.File

Basic Configuration

Program.cs C#
using Serilog;

var builder = WebApplication.CreateBuilder(args);

// Configure Serilog
builder.Host.UseSerilog((context, configuration) =>
{
    configuration
        .ReadFrom.Configuration(context.Configuration)
        .WriteTo.Console()
        .WriteTo.File("logs/log-.txt", rollingInterval: RollingInterval.Day);
});

var app = builder.Build();

app.UseSerilogRequestLogging(); // Log HTTP requests

app.Run();

Configuration in appsettings.json

appsettings.json JSON
{
  "Serilog": {
    "MinimumLevel": {
      "Default": "Information",
      "Override": {
        "Microsoft": "Warning",
        "System": "Warning"
      }
    },
    "WriteTo": [
      { "Name": "Console" },
      {
        "Name": "File",
        "Args": {
          "path": "logs/log-.txt",
          "rollingInterval": "Day"
        }
      }
    ]
  }
}

Popular Serilog Sinks

File Sink

Write to File C#
.WriteTo.File("logs/log-.txt", rollingInterval: RollingInterval.Day)

Seq Sink

Seq is a log server for searching and analyzing structured logs.

Install and Configure Bash
dotnet add package Serilog.Sinks.Seq
Write to Seq C#
.WriteTo.Seq("http://localhost:5341")

Application Insights Sink

Install and Configure Bash
dotnet add package Serilog.Sinks.ApplicationInsights

Enrichers

Enrichers add additional properties to all log events.

Install Enrichers Bash
dotnet add package Serilog.Enrichers.Environment
dotnet add package Serilog.Enrichers.Thread
Configure Enrichers C#
configuration
    .Enrich.WithMachineName()
    .Enrich.WithThreadId()
    .Enrich.WithEnvironmentName()

Key Takeaways

  • Serilog: Popular structured logging library
  • UseSerilog(): Configure Serilog in Program.cs
  • Sinks: Console, File, Seq, Application Insights, etc.
  • Configuration: appsettings.json or code
  • Enrichers: Add properties to all logs
  • UseSerilogRequestLogging(): Log HTTP requests