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