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