From d79acef9ce5bbd620c99c680c28672296383815b Mon Sep 17 00:00:00 2001 From: StuartFerguson Date: Fri, 11 Jul 2025 07:56:49 +0100 Subject: [PATCH] End to End Correlation Id --- .../TransactionProcessor.Aggregates.csproj | 4 +-- .../TransactionProcessor.BusinessLogic.csproj | 8 ++--- .../TransactionProcessor.Client.csproj | 4 +-- ...actionProcessor.DataTransferObjects.csproj | 2 +- .../TransactionProcessor.Database.csproj | 6 ++-- .../TransactionProcessor.DomainEvents.csproj | 2 +- ...rocessor.IntegrationTesting.Helpers.csproj | 6 ++-- ...ansactionProcessor.IntegrationTests.csproj | 6 ++-- ...ionProcessor.ProjectionEngine.Tests.csproj | 2 +- ...ansactionProcessor.ProjectionEngine.csproj | 6 ++-- .../TransactionProcessor.Repository.csproj | 6 ++-- .../TransactionProcessor.Testing.csproj | 4 +-- .../TransactionProcessor.Tests.csproj | 4 +-- .../Bootstrapper/ClientRegistry.cs | 29 +++++----------- TransactionProcessor/Program.cs | 28 ++++++++++++++-- TransactionProcessor/Startup.cs | 33 +++++-------------- .../TransactionProcessor.csproj | 10 +++--- TransactionProcessor/nlog.config | 2 +- 18 files changed, 79 insertions(+), 83 deletions(-) diff --git a/TransactionProcessor.Aggregates/TransactionProcessor.Aggregates.csproj b/TransactionProcessor.Aggregates/TransactionProcessor.Aggregates.csproj index 22fe75e1..30dc0222 100644 --- a/TransactionProcessor.Aggregates/TransactionProcessor.Aggregates.csproj +++ b/TransactionProcessor.Aggregates/TransactionProcessor.Aggregates.csproj @@ -7,8 +7,8 @@ - - + + diff --git a/TransactionProcessor.BusinessLogic/TransactionProcessor.BusinessLogic.csproj b/TransactionProcessor.BusinessLogic/TransactionProcessor.BusinessLogic.csproj index 58f6da8b..17817410 100644 --- a/TransactionProcessor.BusinessLogic/TransactionProcessor.BusinessLogic.csproj +++ b/TransactionProcessor.BusinessLogic/TransactionProcessor.BusinessLogic.csproj @@ -6,15 +6,15 @@ - + - + - - + + diff --git a/TransactionProcessor.Client/TransactionProcessor.Client.csproj b/TransactionProcessor.Client/TransactionProcessor.Client.csproj index e29fa048..b997bb4a 100644 --- a/TransactionProcessor.Client/TransactionProcessor.Client.csproj +++ b/TransactionProcessor.Client/TransactionProcessor.Client.csproj @@ -6,8 +6,8 @@ - - + + diff --git a/TransactionProcessor.DataTransferObjects/TransactionProcessor.DataTransferObjects.csproj b/TransactionProcessor.DataTransferObjects/TransactionProcessor.DataTransferObjects.csproj index 9ec9b182..686090b6 100644 --- a/TransactionProcessor.DataTransferObjects/TransactionProcessor.DataTransferObjects.csproj +++ b/TransactionProcessor.DataTransferObjects/TransactionProcessor.DataTransferObjects.csproj @@ -6,7 +6,7 @@ - + diff --git a/TransactionProcessor.Database/TransactionProcessor.Database.csproj b/TransactionProcessor.Database/TransactionProcessor.Database.csproj index 8176a300..916a4238 100644 --- a/TransactionProcessor.Database/TransactionProcessor.Database.csproj +++ b/TransactionProcessor.Database/TransactionProcessor.Database.csproj @@ -17,10 +17,10 @@ - - + + - + diff --git a/TransactionProcessor.DomainEvents/TransactionProcessor.DomainEvents.csproj b/TransactionProcessor.DomainEvents/TransactionProcessor.DomainEvents.csproj index 7b98eba4..a23afb37 100644 --- a/TransactionProcessor.DomainEvents/TransactionProcessor.DomainEvents.csproj +++ b/TransactionProcessor.DomainEvents/TransactionProcessor.DomainEvents.csproj @@ -6,6 +6,6 @@ enable - + diff --git a/TransactionProcessor.IntegrationTesting.Helpers/TransactionProcessor.IntegrationTesting.Helpers.csproj b/TransactionProcessor.IntegrationTesting.Helpers/TransactionProcessor.IntegrationTesting.Helpers.csproj index f3d38a1d..39e0345c 100644 --- a/TransactionProcessor.IntegrationTesting.Helpers/TransactionProcessor.IntegrationTesting.Helpers.csproj +++ b/TransactionProcessor.IntegrationTesting.Helpers/TransactionProcessor.IntegrationTesting.Helpers.csproj @@ -7,10 +7,10 @@ - - + + - + diff --git a/TransactionProcessor.IntegrationTests/TransactionProcessor.IntegrationTests.csproj b/TransactionProcessor.IntegrationTests/TransactionProcessor.IntegrationTests.csproj index e96c0049..d163955b 100644 --- a/TransactionProcessor.IntegrationTests/TransactionProcessor.IntegrationTests.csproj +++ b/TransactionProcessor.IntegrationTests/TransactionProcessor.IntegrationTests.csproj @@ -7,16 +7,16 @@ - + - + - + diff --git a/TransactionProcessor.ProjectionEngine.Tests/TransactionProcessor.ProjectionEngine.Tests.csproj b/TransactionProcessor.ProjectionEngine.Tests/TransactionProcessor.ProjectionEngine.Tests.csproj index 317535ae..8900cd8f 100644 --- a/TransactionProcessor.ProjectionEngine.Tests/TransactionProcessor.ProjectionEngine.Tests.csproj +++ b/TransactionProcessor.ProjectionEngine.Tests/TransactionProcessor.ProjectionEngine.Tests.csproj @@ -9,7 +9,7 @@ - + diff --git a/TransactionProcessor.ProjectionEngine/TransactionProcessor.ProjectionEngine.csproj b/TransactionProcessor.ProjectionEngine/TransactionProcessor.ProjectionEngine.csproj index c96c41dc..78bf8e2c 100644 --- a/TransactionProcessor.ProjectionEngine/TransactionProcessor.ProjectionEngine.csproj +++ b/TransactionProcessor.ProjectionEngine/TransactionProcessor.ProjectionEngine.csproj @@ -9,11 +9,11 @@ - + - - + + diff --git a/TransactionProcessor.Repository/TransactionProcessor.Repository.csproj b/TransactionProcessor.Repository/TransactionProcessor.Repository.csproj index de771d24..7f888841 100644 --- a/TransactionProcessor.Repository/TransactionProcessor.Repository.csproj +++ b/TransactionProcessor.Repository/TransactionProcessor.Repository.csproj @@ -13,9 +13,9 @@ - - - + + + diff --git a/TransactionProcessor.Testing/TransactionProcessor.Testing.csproj b/TransactionProcessor.Testing/TransactionProcessor.Testing.csproj index 21b5da46..abdc75a8 100644 --- a/TransactionProcessor.Testing/TransactionProcessor.Testing.csproj +++ b/TransactionProcessor.Testing/TransactionProcessor.Testing.csproj @@ -6,8 +6,8 @@ - - + + diff --git a/TransactionProcessor.Tests/TransactionProcessor.Tests.csproj b/TransactionProcessor.Tests/TransactionProcessor.Tests.csproj index 8aa9953d..e048fd44 100644 --- a/TransactionProcessor.Tests/TransactionProcessor.Tests.csproj +++ b/TransactionProcessor.Tests/TransactionProcessor.Tests.csproj @@ -7,10 +7,10 @@ - + - + diff --git a/TransactionProcessor/Bootstrapper/ClientRegistry.cs b/TransactionProcessor/Bootstrapper/ClientRegistry.cs index 6eb9cf25..160116c6 100644 --- a/TransactionProcessor/Bootstrapper/ClientRegistry.cs +++ b/TransactionProcessor/Bootstrapper/ClientRegistry.cs @@ -1,13 +1,14 @@ namespace TransactionProcessor.Bootstrapper { - using System; - using System.Diagnostics.CodeAnalysis; - using System.Net.Http; + using ClientProxyBase; using Lamar; using MessagingService.Client; using Microsoft.Extensions.DependencyInjection; using SecurityService.Client; using Shared.General; + using System; + using System.Diagnostics.CodeAnalysis; + using System.Net.Http; /// /// @@ -23,26 +24,12 @@ public class ClientRegistry : ServiceRegistry /// public ClientRegistry() { - this.AddSingleton(); - this.AddSingleton(); - - Func resolver(IServiceProvider container) => serviceName => { return ConfigurationReader.GetBaseServerUri(serviceName).OriginalString; }; - Func resolver1() => serviceName => { return ConfigurationReader.GetBaseServerUri(serviceName).OriginalString; }; + this.AddHttpContextAccessor(); + this.RegisterHttpClient(); + this.RegisterHttpClient(); + Func resolver(IServiceProvider container) => serviceName => ConfigurationReader.GetBaseServerUri(serviceName).OriginalString; this.AddSingleton>(resolver); - - var httpMessageHandler = new SocketsHttpHandler - { - SslOptions = - { - RemoteCertificateValidationCallback = (sender, - certificate, - chain, - errors) => true, - } - }; - HttpClient httpClient = new HttpClient(httpMessageHandler); - this.AddSingleton(httpClient); } #endregion diff --git a/TransactionProcessor/Program.cs b/TransactionProcessor/Program.cs index fa2a363a..fd3851f9 100644 --- a/TransactionProcessor/Program.cs +++ b/TransactionProcessor/Program.cs @@ -1,13 +1,19 @@ +using System; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Hosting; +using Microsoft.Extensions.Logging; +using NLog.Extensions.Logging; +using Shared.Logger; +using Shared.Middleware; namespace TransactionProcessor { - using System.Diagnostics.CodeAnalysis; - using System.IO; using Lamar.Microsoft.DependencyInjection; using Microsoft.Extensions.DependencyInjection; + using NLog; + using System.Diagnostics.CodeAnalysis; + using System.IO; [ExcludeFromCodeCoverage] public class Program @@ -27,6 +33,20 @@ public static IHostBuilder CreateHostBuilder(string[] args) .AddJsonFile("hosting.development.json", optional: true) .AddEnvironmentVariables().Build(); + String contentRoot = Directory.GetCurrentDirectory(); + String nlogConfigPath = Path.Combine(contentRoot, "nlog.config"); + + LogManager.Setup(b => + { + b.SetupLogFactory(setup => + { + setup.AddCallSiteHiddenAssembly(typeof(NlogLogger).Assembly); + setup.AddCallSiteHiddenAssembly(typeof(Shared.Logger.Logger).Assembly); + setup.AddCallSiteHiddenAssembly(typeof(TenantMiddleware).Assembly); + }); + b.LoadConfigurationFromFile(nlogConfigPath); + }); + IHostBuilder hostBuilder = Host.CreateDefaultBuilder(args); hostBuilder.UseWindowsService(); hostBuilder.UseLamar(); @@ -36,7 +56,11 @@ public static IHostBuilder CreateHostBuilder(string[] args) webBuilder.UseConfiguration(config); webBuilder.UseKestrel(); }); + hostBuilder.ConfigureLogging(logging => { + logging.AddConsole(); + logging.AddNLog(); + }); hostBuilder.ConfigureServices(services => { services.AddHostedService(provider => diff --git a/TransactionProcessor/Startup.cs b/TransactionProcessor/Startup.cs index 47f738ab..b739e92c 100644 --- a/TransactionProcessor/Startup.cs +++ b/TransactionProcessor/Startup.cs @@ -1,15 +1,10 @@ +using Prometheus; using System.Linq; using System.Threading; -using Prometheus; using TransactionProcessor.BusinessLogic.Services; namespace TransactionProcessor { - using System; - using System.Collections.Generic; - using System.Diagnostics.CodeAnalysis; - using System.IO; - using System.Reflection; using Bootstrapper; using HealthChecks.UI.Client; using Lamar; @@ -25,6 +20,12 @@ namespace TransactionProcessor using Shared.EventStore.Aggregate; using Shared.Extensions; using Shared.General; + using Shared.Middleware; + using System; + using System.Collections.Generic; + using System.Diagnostics.CodeAnalysis; + using System.IO; + using System.Reflection; using ILogger = Microsoft.Extensions.Logging.ILogger; using Logger = Shared.Logger.Logger; @@ -99,27 +100,11 @@ public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory) { ConfigurationReader.Initialise(Startup.Configuration); - - String nlogConfigFilename = "nlog.config"; - + if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); - string directoryPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); - LogManager.AddHiddenAssembly(Assembly.LoadFrom(Path.Combine(directoryPath, "Shared.dll"))); - - var developmentNlogConfigFilename = "nlog.development.config"; - if (File.Exists(Path.Combine(env.ContentRootPath, developmentNlogConfigFilename))) - { - nlogConfigFilename = developmentNlogConfigFilename; - } - } - else{ - LogManager.AddHiddenAssembly(Assembly.LoadFrom(Path.Combine(env.ContentRootPath, "Shared.dll"))); } - loggerFactory.ConfigureNLog(Path.Combine(env.ContentRootPath, nlogConfigFilename)); - loggerFactory.AddNLog(); - ILogger logger = loggerFactory.CreateLogger("TransactionProcessor"); Logger.Initialise(logger); @@ -129,7 +114,7 @@ public void Configure(IApplicationBuilder app, foreach (KeyValuePair type in TypeMap.Map) { Logger.LogInformation($"Type name {type.Value} mapped to {type.Key.Name}"); } - + app.UseMiddleware(); app.AddRequestLogging(); app.AddResponseLogging(); app.AddExceptionHandler(); diff --git a/TransactionProcessor/TransactionProcessor.csproj b/TransactionProcessor/TransactionProcessor.csproj index 270321a6..07b0f024 100644 --- a/TransactionProcessor/TransactionProcessor.csproj +++ b/TransactionProcessor/TransactionProcessor.csproj @@ -10,7 +10,7 @@ - + @@ -25,7 +25,7 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive - + @@ -34,10 +34,10 @@ - - + + - + diff --git a/TransactionProcessor/nlog.config b/TransactionProcessor/nlog.config index df512318..1ec67c78 100644 --- a/TransactionProcessor/nlog.config +++ b/TransactionProcessor/nlog.config @@ -5,7 +5,7 @@