Skip to content

Commit 38c0ce4

Browse files
committed
Update Serilog to work properly with OTEL and structured logging
1 parent 09279aa commit 38c0ce4

File tree

3 files changed

+16
-15
lines changed

3 files changed

+16
-15
lines changed

Directory.Packages.props

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
<PackageVersion Include="ReportGenerator" Version="5.5.0" />
3434
<PackageVersion Include="Scalar.AspNetCore" Version="2.10.3" />
3535
<PackageVersion Include="Serilog.AspNetCore" Version="9.0.0" />
36+
<PackageVersion Include="Serilog.Sinks.OpenTelemetry" Version="4.2.0" />
3637
<PackageVersion Include="Shouldly" Version="4.3.0" />
3738
<PackageVersion Include="SQLite" Version="3.13.0" />
3839
<PackageVersion Include="Swashbuckle.AspNetCore" Version="6.5.0" />

src/Clean.Architecture.Web/Configurations/LoggerConfigs.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,14 @@ public static class LoggerConfigs
66
{
77
public static WebApplicationBuilder AddLoggerConfigs(this WebApplicationBuilder builder)
88
{
9-
10-
builder.Host.UseSerilog((_, config) => config.ReadFrom.Configuration(builder.Configuration));
9+
// Add Serilog as an additional logging provider alongside OpenTelemetry
10+
// This allows both Serilog (for console/file) and OpenTelemetry (for Aspire) to work together
11+
builder.Logging.AddSerilog(new LoggerConfiguration()
12+
.ReadFrom.Configuration(builder.Configuration)
13+
.Enrich.FromLogContext()
14+
.Enrich.WithProperty("Application", builder.Environment.ApplicationName)
15+
.WriteTo.Console()
16+
.CreateLogger());
1117

1218
return builder;
1319
}

src/Clean.Architecture.Web/Program.cs

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,16 @@
22

33
var builder = WebApplication.CreateBuilder(args);
44

5-
builder.AddServiceDefaults();
5+
builder.AddServiceDefaults() // This sets up OpenTelemetry logging
6+
.AddLoggerConfigs(); // This adds Serilog for console formatting
67

7-
var logger = Log.Logger = new LoggerConfiguration()
8-
.Enrich.FromLogContext()
9-
.WriteTo.Console()
10-
.CreateLogger();
8+
using var loggerFactory = LoggerFactory.Create(config => config.AddConsole());
9+
var startupLogger = loggerFactory.CreateLogger<Program>();
1110

12-
logger.Information("Starting web host");
11+
startupLogger.LogInformation("Starting web host");
1312

14-
builder.AddLoggerConfigs();
15-
16-
var appLogger = new SerilogLoggerFactory(logger)
17-
.CreateLogger<Program>();
18-
19-
builder.Services.AddOptionConfigs(builder.Configuration, appLogger, builder);
20-
builder.Services.AddServiceConfigs(appLogger, builder);
13+
builder.Services.AddOptionConfigs(builder.Configuration, startupLogger, builder);
14+
builder.Services.AddServiceConfigs(startupLogger, builder);
2115

2216
builder.Services.AddFastEndpoints()
2317
.SwaggerDocument(o =>

0 commit comments

Comments
 (0)