diff --git a/Directory.Packages.props b/Directory.Packages.props
index 7430824..709c83d 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -19,6 +19,7 @@
+
diff --git a/HrynCo.NotificationService.Api/Program.cs b/HrynCo.NotificationService.Api/Program.cs
index 95b1753..21a7ceb 100644
--- a/HrynCo.NotificationService.Api/Program.cs
+++ b/HrynCo.NotificationService.Api/Program.cs
@@ -1,12 +1,10 @@
using HrynCo.NotificationService.Api;
using HrynCo.NotificationService.DAL.EF;
using HrynCo.NotificationService.Services;
-using Serilog;
var builder = WebApplication.CreateBuilder(args);
-builder.Host.UseSerilog((context, lc) =>
- lc.ReadFrom.Configuration(context.Configuration));
+builder.AddSerilog();
var appSettings = builder.Configuration
.GetSection(AppSettings.SectionName)
diff --git a/HrynCo.NotificationService.Api/SerilogRegistrar.cs b/HrynCo.NotificationService.Api/SerilogRegistrar.cs
new file mode 100644
index 0000000..c00ba45
--- /dev/null
+++ b/HrynCo.NotificationService.Api/SerilogRegistrar.cs
@@ -0,0 +1,20 @@
+using Serilog;
+
+namespace HrynCo.NotificationService.Api;
+
+public static class SerilogRegistrar
+{
+ public static void AddSerilog(this WebApplicationBuilder builder)
+ {
+ var loggerConfiguration = new LoggerConfiguration()
+ .ReadFrom.Configuration(builder.Configuration)
+ .Enrich.FromLogContext();
+
+ Log.Logger = loggerConfiguration.CreateLogger();
+
+ builder.Logging.AddSerilog(Log.Logger);
+ builder.Host.UseSerilog();
+
+ builder.Services.AddSingleton(Log.Logger);
+ }
+}
\ No newline at end of file
diff --git a/HrynCo.NotificationService.Services/HrynCo.NotificationService.Services.csproj b/HrynCo.NotificationService.Services/HrynCo.NotificationService.Services.csproj
index e7cba24..d7539ee 100644
--- a/HrynCo.NotificationService.Services/HrynCo.NotificationService.Services.csproj
+++ b/HrynCo.NotificationService.Services/HrynCo.NotificationService.Services.csproj
@@ -3,6 +3,7 @@
+
diff --git a/HrynCo.NotificationService.Services/Logging/ContextualSerilogLogger.cs b/HrynCo.NotificationService.Services/Logging/ContextualSerilogLogger.cs
new file mode 100644
index 0000000..53f43ec
--- /dev/null
+++ b/HrynCo.NotificationService.Services/Logging/ContextualSerilogLogger.cs
@@ -0,0 +1,8 @@
+using Serilog;
+
+namespace HrynCo.NotificationService.Services.Logging;
+
+public sealed class ContextualSerilogLogger : IContextualSerilogLogger
+{
+ public ILogger Logger { get; } = Log.ForContext();
+}
\ No newline at end of file
diff --git a/HrynCo.NotificationService.Services/Logging/IContextualSerilogLogger.cs b/HrynCo.NotificationService.Services/Logging/IContextualSerilogLogger.cs
new file mode 100644
index 0000000..718de10
--- /dev/null
+++ b/HrynCo.NotificationService.Services/Logging/IContextualSerilogLogger.cs
@@ -0,0 +1,11 @@
+using System.Diagnostics.CodeAnalysis;
+using Serilog;
+
+namespace HrynCo.NotificationService.Services.Logging;
+
+[SuppressMessage("Major Code Smell", "S2326:Unused type parameters should be removed",
+ Justification = "Generic parameter used in implementation via ForContext.")]
+public interface IContextualSerilogLogger
+{
+ ILogger Logger { get; }
+}
\ No newline at end of file
diff --git a/HrynCo.NotificationService.Services/ServiceCollectionExtensions.cs b/HrynCo.NotificationService.Services/ServiceCollectionExtensions.cs
index a5ec603..f49dfdd 100644
--- a/HrynCo.NotificationService.Services/ServiceCollectionExtensions.cs
+++ b/HrynCo.NotificationService.Services/ServiceCollectionExtensions.cs
@@ -1,4 +1,5 @@
using HrynCo.NotificationService.Services.Behaviors;
+using HrynCo.NotificationService.Services.Logging;
using MediatR;
using Microsoft.Extensions.DependencyInjection;
@@ -14,6 +15,8 @@ public static class ServiceCollectionExtensions
cfg.AddBehavior(typeof(IPipelineBehavior<,>), typeof(TransactionBehavior<,>));
});
+ services.AddTransient(typeof(IContextualSerilogLogger<>), typeof(ContextualSerilogLogger<>));
+
return services;
}
}
diff --git a/HrynCo.NotificationService.Worker/Program.cs b/HrynCo.NotificationService.Worker/Program.cs
index bebce7a..7b2098e 100644
--- a/HrynCo.NotificationService.Worker/Program.cs
+++ b/HrynCo.NotificationService.Worker/Program.cs
@@ -1,12 +1,10 @@
using HrynCo.NotificationService.DAL.EF;
using HrynCo.NotificationService.Services;
using HrynCo.NotificationService.Worker;
-using Serilog;
var builder = Host.CreateApplicationBuilder(args);
-builder.Services.AddSerilog(lc =>
- lc.ReadFrom.Configuration(builder.Configuration));
+builder.AddSerilog();
var appSettings = builder.Configuration
.GetSection(AppSettings.SectionName)
diff --git a/HrynCo.NotificationService.Worker/SerilogRegistrar.cs b/HrynCo.NotificationService.Worker/SerilogRegistrar.cs
new file mode 100644
index 0000000..68e38f5
--- /dev/null
+++ b/HrynCo.NotificationService.Worker/SerilogRegistrar.cs
@@ -0,0 +1,21 @@
+using Microsoft.Extensions.Logging;
+using Serilog;
+
+namespace HrynCo.NotificationService.Worker;
+
+public static class SerilogRegistrar
+{
+ public static void AddSerilog(this HostApplicationBuilder builder)
+ {
+ var loggerConfiguration = new LoggerConfiguration()
+ .ReadFrom.Configuration(builder.Configuration)
+ .Enrich.FromLogContext();
+
+ Log.Logger = loggerConfiguration.CreateLogger();
+
+ builder.Logging.AddSerilog(Log.Logger);
+ builder.Services.AddSerilog();
+
+ builder.Services.AddSingleton(Log.Logger);
+ }
+}
\ No newline at end of file