Adding Serilog to .NET 8 apps
Adding Serilog
using Serilog;
Adding Serilog to .NET Background Service
[ExcludeFromCodeCoverage]
public static class Program
{
public static void Main(string[] args)
{
try
{
var builder = Host.CreateApplicationBuilder(args);
builder.Services.AddDependencies();
builder.Services.AddSerilog((services, loggerConfiguration) =>
loggerConfiguration
.ReadFrom.Configuration(builder.Configuration)
.Enrich.WithMachineName()
.Enrich.WithProcessId()
.Enrich.FromLogContext());
IHost host = builder.Build();
host.Run();
}
}
}
Adding Serilog to API
[ExcludeFromCodeCoverage]
public static class Program
{
public static void Main(string[] args)
{
IHost host = Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Api>();
})
.UseSerilog((context, services, configuration) => {
configuration.ReadFrom.Configuration(context.Configuration);
configuration.Enrich.WithMachineName();
configuration.Enrich.WithProcessId();
configuration.Enrich.FromLogContext();
})
.Build();
host.Run();
}
}
public static class Program
{
public static void Main(string[] args)
{
IHost host = Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Api>();
})
.UseSerilog((context, services, configuration) => {
configuration.ReadFrom.Configuration(context.Configuration);
configuration.Enrich.WithMachineName();
configuration.Enrich.WithProcessId();
configuration.Enrich.FromLogContext();
})
.Build();
host.Run();
}
}
appSettings.json
{
"Serilog": {
"Using": [ "Serilog.Sinks.File" ],
"MinimumLevel": {
"Default": "Verbose",
"Override": {
"Microsoft.AspNetCore.Hosting": "Warning",
"Microsoft.AspNetCore.HostFiltering": "Warning",
"Microsoft.AspNetCore.Mvc": "Warning",
"Microsoft.AspNetCore.Routing": "Information",
"Microsoft.AspNetCore.Routing.EndpointRoutingMiddleware": "Warning",
"Microsoft.AspNetCore.Routing.Matching.DfaMatcher": "Warning",
"Microsoft.AspNetCore.Server.Kestrel": "Warning",
"Microsoft.AspNetCore.Server.Kestrel.Https.Internal.HttpsConnectionMiddleware": "Warning",
"Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets": "Warning",
"Microsoft.Extensions.Hosting": "Warning",
"Microsoft.Hosting.Lifetime": "Warning"
}
},
"WriteTo": [
{
"Name": "File",
"Args": {
"path": "logs/WorkerService.log",
"shared": "true",
"rollingInterval": "Day",
"rollOnFileSizeLimit": true,
"fileSizeLimitBytes": "1048576",
"retainedFileCountLimit": 14,
"outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{SourceContext:l}] [{Level:u3}] {Message:lj}{NewLine}{Exception}"
}
}
],
"Enrich": [ "FromLogContext" ],
"Properties": {
"Application": "WorkerService"
}
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
}
}
"Serilog": {
"Using": [ "Serilog.Sinks.File" ],
"MinimumLevel": {
"Default": "Verbose",
"Override": {
"Microsoft.AspNetCore.Hosting": "Warning",
"Microsoft.AspNetCore.HostFiltering": "Warning",
"Microsoft.AspNetCore.Mvc": "Warning",
"Microsoft.AspNetCore.Routing": "Information",
"Microsoft.AspNetCore.Routing.EndpointRoutingMiddleware": "Warning",
"Microsoft.AspNetCore.Routing.Matching.DfaMatcher": "Warning",
"Microsoft.AspNetCore.Server.Kestrel": "Warning",
"Microsoft.AspNetCore.Server.Kestrel.Https.Internal.HttpsConnectionMiddleware": "Warning",
"Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets": "Warning",
"Microsoft.Extensions.Hosting": "Warning",
"Microsoft.Hosting.Lifetime": "Warning"
}
},
"WriteTo": [
{
"Name": "File",
"Args": {
"path": "logs/WorkerService.log",
"shared": "true",
"rollingInterval": "Day",
"rollOnFileSizeLimit": true,
"fileSizeLimitBytes": "1048576",
"retainedFileCountLimit": 14,
"outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{SourceContext:l}] [{Level:u3}] {Message:lj}{NewLine}{Exception}"
}
}
],
"Enrich": [ "FromLogContext" ],
"Properties": {
"Application": "WorkerService"
}
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
}
}
PS - Change WorkerService to whatever you want.
Add Logs folder
Add logs folder to focal project
For Logging to App Event Viewer
In Program.cs, after var host = builder.Build():
Log.Logger = new LoggerConfiguration()
.WriteTo.EventLog("XXXXXX", manageEventSource: true)
.CreateLogger();
Log.Information("Hello, Windows Event Log!");
.WriteTo.EventLog("XXXXXX", manageEventSource: true)
.CreateLogger();
Log.Information("Hello, Windows Event Log!");
Comments
Post a Comment