From a277e1f3a2ae07422f1998ae33a48e7eafc0a2a3 Mon Sep 17 00:00:00 2001 From: Stuart Ferguson Date: Tue, 2 Jul 2024 11:05:56 +0100 Subject: [PATCH 1/2] trace improvements --- .../TransactionProcessor.BusinessLogic.csproj | 10 ++-- .../TransactionProcessor.Client.csproj | 2 +- ...sactionProcessor.Float.DomainEvents.csproj | 2 +- ...TransactionProcessor.FloatAggregate.csproj | 2 +- ...rocessor.IntegrationTesting.Helpers.csproj | 4 +- ...ansactionProcessor.IntegrationTests.csproj | 12 ++--- ...Processor.ProjectionEngine.Database.csproj | 4 +- ...ansactionProcessor.ProjectionEngine.csproj | 12 ++--- ...ocessor.Reconciliation.DomainEvents.csproj | 2 +- ...onProcessor.ReconciliationAggregate.csproj | 2 +- ...onProcessor.Settlement.DomainEvents.csproj | 2 +- ...ctionProcessor.SettlementAggregates.csproj | 2 +- ...nProcessor.Transaction.DomainEvents.csproj | 2 +- ...ctionProcessor.TransactionAggregate.csproj | 2 +- ...ctionProcessor.Voucher.DomainEvents.csproj | 2 +- ...ansactionProcessor.VoucherAggregate.csproj | 2 +- .../Bootstrapper/MiscRegistry.cs | 40 +++++++++++++++- .../Bootstrapper/OperatorRegistry.cs | 7 ++- .../Common/ClientMessageLogger.cs | 46 ++++++++++++++++--- .../Common/ClientMessageLoggingBehavior.cs | 11 +++-- .../Common/ServiceEndpointExtensions.cs | 8 ++-- .../Controllers/DomainEventController.cs | 6 +-- TransactionProcessor/Startup.cs | 35 +++----------- .../TransactionProcessor.csproj | 4 +- TransactionProcessor/nlog.config | 15 ++++-- 25 files changed, 152 insertions(+), 84 deletions(-) diff --git a/TransactionProcessor.BusinessLogic/TransactionProcessor.BusinessLogic.csproj b/TransactionProcessor.BusinessLogic/TransactionProcessor.BusinessLogic.csproj index 179e55d3..b0110044 100644 --- a/TransactionProcessor.BusinessLogic/TransactionProcessor.BusinessLogic.csproj +++ b/TransactionProcessor.BusinessLogic/TransactionProcessor.BusinessLogic.csproj @@ -5,13 +5,13 @@ - - + + - - - + + + diff --git a/TransactionProcessor.Client/TransactionProcessor.Client.csproj b/TransactionProcessor.Client/TransactionProcessor.Client.csproj index 1434ef58..174ebe58 100644 --- a/TransactionProcessor.Client/TransactionProcessor.Client.csproj +++ b/TransactionProcessor.Client/TransactionProcessor.Client.csproj @@ -6,7 +6,7 @@ - + diff --git a/TransactionProcessor.Float.DomainEvents/TransactionProcessor.Float.DomainEvents.csproj b/TransactionProcessor.Float.DomainEvents/TransactionProcessor.Float.DomainEvents.csproj index 44d67ec7..c9eeaed5 100644 --- a/TransactionProcessor.Float.DomainEvents/TransactionProcessor.Float.DomainEvents.csproj +++ b/TransactionProcessor.Float.DomainEvents/TransactionProcessor.Float.DomainEvents.csproj @@ -7,7 +7,7 @@ - + diff --git a/TransactionProcessor.FloatAggregate/TransactionProcessor.FloatAggregate.csproj b/TransactionProcessor.FloatAggregate/TransactionProcessor.FloatAggregate.csproj index cb57ff5f..7703aa00 100644 --- a/TransactionProcessor.FloatAggregate/TransactionProcessor.FloatAggregate.csproj +++ b/TransactionProcessor.FloatAggregate/TransactionProcessor.FloatAggregate.csproj @@ -7,7 +7,7 @@ - + diff --git a/TransactionProcessor.IntegrationTesting.Helpers/TransactionProcessor.IntegrationTesting.Helpers.csproj b/TransactionProcessor.IntegrationTesting.Helpers/TransactionProcessor.IntegrationTesting.Helpers.csproj index a023a081..bac7c67d 100644 --- a/TransactionProcessor.IntegrationTesting.Helpers/TransactionProcessor.IntegrationTesting.Helpers.csproj +++ b/TransactionProcessor.IntegrationTesting.Helpers/TransactionProcessor.IntegrationTesting.Helpers.csproj @@ -7,8 +7,8 @@ - - + + diff --git a/TransactionProcessor.IntegrationTests/TransactionProcessor.IntegrationTests.csproj b/TransactionProcessor.IntegrationTests/TransactionProcessor.IntegrationTests.csproj index 8a271755..e220e7ca 100644 --- a/TransactionProcessor.IntegrationTests/TransactionProcessor.IntegrationTests.csproj +++ b/TransactionProcessor.IntegrationTests/TransactionProcessor.IntegrationTests.csproj @@ -7,17 +7,17 @@ - + - - + + - - - + + + diff --git a/TransactionProcessor.ProjectionEngine.Database/TransactionProcessor.ProjectionEngine.Database.csproj b/TransactionProcessor.ProjectionEngine.Database/TransactionProcessor.ProjectionEngine.Database.csproj index 8f802faa..57ae5a58 100644 --- a/TransactionProcessor.ProjectionEngine.Database/TransactionProcessor.ProjectionEngine.Database.csproj +++ b/TransactionProcessor.ProjectionEngine.Database/TransactionProcessor.ProjectionEngine.Database.csproj @@ -10,9 +10,9 @@ - + - + all diff --git a/TransactionProcessor.ProjectionEngine/TransactionProcessor.ProjectionEngine.csproj b/TransactionProcessor.ProjectionEngine/TransactionProcessor.ProjectionEngine.csproj index dd896a13..4da85e4f 100644 --- a/TransactionProcessor.ProjectionEngine/TransactionProcessor.ProjectionEngine.csproj +++ b/TransactionProcessor.ProjectionEngine/TransactionProcessor.ProjectionEngine.csproj @@ -7,13 +7,13 @@ - - - - + + + + - - + + diff --git a/TransactionProcessor.Reconciliation.DomainEvents/TransactionProcessor.Reconciliation.DomainEvents.csproj b/TransactionProcessor.Reconciliation.DomainEvents/TransactionProcessor.Reconciliation.DomainEvents.csproj index b04c95e5..82a1327a 100644 --- a/TransactionProcessor.Reconciliation.DomainEvents/TransactionProcessor.Reconciliation.DomainEvents.csproj +++ b/TransactionProcessor.Reconciliation.DomainEvents/TransactionProcessor.Reconciliation.DomainEvents.csproj @@ -5,6 +5,6 @@ - + diff --git a/TransactionProcessor.ReconciliationAggregate/TransactionProcessor.ReconciliationAggregate.csproj b/TransactionProcessor.ReconciliationAggregate/TransactionProcessor.ReconciliationAggregate.csproj index 1d7cec85..98cc32fd 100644 --- a/TransactionProcessor.ReconciliationAggregate/TransactionProcessor.ReconciliationAggregate.csproj +++ b/TransactionProcessor.ReconciliationAggregate/TransactionProcessor.ReconciliationAggregate.csproj @@ -6,7 +6,7 @@ - + diff --git a/TransactionProcessor.Settlement.DomainEvents/TransactionProcessor.Settlement.DomainEvents.csproj b/TransactionProcessor.Settlement.DomainEvents/TransactionProcessor.Settlement.DomainEvents.csproj index eced813d..f88cacd6 100644 --- a/TransactionProcessor.Settlement.DomainEvents/TransactionProcessor.Settlement.DomainEvents.csproj +++ b/TransactionProcessor.Settlement.DomainEvents/TransactionProcessor.Settlement.DomainEvents.csproj @@ -5,7 +5,7 @@ - + diff --git a/TransactionProcessor.SettlementAggregates/TransactionProcessor.SettlementAggregates.csproj b/TransactionProcessor.SettlementAggregates/TransactionProcessor.SettlementAggregates.csproj index ea05732f..990da793 100644 --- a/TransactionProcessor.SettlementAggregates/TransactionProcessor.SettlementAggregates.csproj +++ b/TransactionProcessor.SettlementAggregates/TransactionProcessor.SettlementAggregates.csproj @@ -6,7 +6,7 @@ - + diff --git a/TransactionProcessor.Transaction.DomainEvents/TransactionProcessor.Transaction.DomainEvents.csproj b/TransactionProcessor.Transaction.DomainEvents/TransactionProcessor.Transaction.DomainEvents.csproj index 699ed783..86b821bd 100644 --- a/TransactionProcessor.Transaction.DomainEvents/TransactionProcessor.Transaction.DomainEvents.csproj +++ b/TransactionProcessor.Transaction.DomainEvents/TransactionProcessor.Transaction.DomainEvents.csproj @@ -5,7 +5,7 @@ - + diff --git a/TransactionProcessor.TransactionAgrgegate/TransactionProcessor.TransactionAggregate.csproj b/TransactionProcessor.TransactionAgrgegate/TransactionProcessor.TransactionAggregate.csproj index 13dfc6f8..30809db6 100644 --- a/TransactionProcessor.TransactionAgrgegate/TransactionProcessor.TransactionAggregate.csproj +++ b/TransactionProcessor.TransactionAgrgegate/TransactionProcessor.TransactionAggregate.csproj @@ -6,7 +6,7 @@ - + diff --git a/TransactionProcessor.Voucher.DomainEvents/TransactionProcessor.Voucher.DomainEvents.csproj b/TransactionProcessor.Voucher.DomainEvents/TransactionProcessor.Voucher.DomainEvents.csproj index b661619f..78e56b86 100644 --- a/TransactionProcessor.Voucher.DomainEvents/TransactionProcessor.Voucher.DomainEvents.csproj +++ b/TransactionProcessor.Voucher.DomainEvents/TransactionProcessor.Voucher.DomainEvents.csproj @@ -7,6 +7,6 @@ - + diff --git a/TransactionProcessor.VoucherAggregate/TransactionProcessor.VoucherAggregate.csproj b/TransactionProcessor.VoucherAggregate/TransactionProcessor.VoucherAggregate.csproj index 6cf2d2c5..6970e5b0 100644 --- a/TransactionProcessor.VoucherAggregate/TransactionProcessor.VoucherAggregate.csproj +++ b/TransactionProcessor.VoucherAggregate/TransactionProcessor.VoucherAggregate.csproj @@ -8,7 +8,7 @@ - + diff --git a/TransactionProcessor/Bootstrapper/MiscRegistry.cs b/TransactionProcessor/Bootstrapper/MiscRegistry.cs index dc9397df..01725326 100644 --- a/TransactionProcessor/Bootstrapper/MiscRegistry.cs +++ b/TransactionProcessor/Bootstrapper/MiscRegistry.cs @@ -1,5 +1,9 @@ -namespace TransactionProcessor.Bootstrapper +using Microsoft.Extensions.Logging; + +namespace TransactionProcessor.Bootstrapper { + using System.Collections.Generic; + using System; using System.Diagnostics.CodeAnalysis; using System.IO.Abstractions; using BusinessLogic.Common; @@ -8,6 +12,9 @@ using Factories; using Lamar; using Microsoft.Extensions.DependencyInjection; + using NuGet.Protocol.Plugins; + using Shared.General; + using Shared.Middleware; /// /// @@ -29,8 +36,39 @@ public MiscRegistry() this.AddSingleton(); this.AddSingleton(); this.AddSingleton(); + + bool logRequests = ConfigurationReaderExtensions.GetValueOrDefault("MiddlewareLogging", "LogRequests", true); + bool logResponses = ConfigurationReaderExtensions.GetValueOrDefault("MiddlewareLogging", "LogResponses", true); + LogLevel middlewareLogLevel = ConfigurationReaderExtensions.GetValueOrDefault("MiddlewareLogging", "MiddlewareLogLevel", LogLevel.Warning); + + RequestResponseMiddlewareLoggingConfig config = + new RequestResponseMiddlewareLoggingConfig(middlewareLogLevel, logRequests, logResponses); + + this.AddSingleton(config); } #endregion } + + public static class ConfigurationReaderExtensions + { + public static T GetValueOrDefault(String sectionName, String keyName, T defaultValue) + { + try + { + var value = ConfigurationReader.GetValue(sectionName, keyName); + + if (String.IsNullOrEmpty(value)) + { + return defaultValue; + } + + return (T)Convert.ChangeType(value, typeof(T)); + } + catch (KeyNotFoundException kex) + { + return defaultValue; + } + } + } } \ No newline at end of file diff --git a/TransactionProcessor/Bootstrapper/OperatorRegistry.cs b/TransactionProcessor/Bootstrapper/OperatorRegistry.cs index 6219fbc3..a2c18935 100644 --- a/TransactionProcessor/Bootstrapper/OperatorRegistry.cs +++ b/TransactionProcessor/Bootstrapper/OperatorRegistry.cs @@ -1,4 +1,6 @@ -namespace TransactionProcessor.Bootstrapper +using Shared.Middleware; + +namespace TransactionProcessor.Bootstrapper { using System; using System.Diagnostics.CodeAnalysis; @@ -47,9 +49,10 @@ public OperatorRegistry() this.For().Add().Named("PataPawaPrePay").Singleton(); this.For().Add().Named("Voucher").Singleton(); + var loggingConfig = Startup.Container.GetInstance(); this.AddTransient>(context => (client,clientName, url) => { - client.Endpoint.SetTraceLogging(clientName); + client.Endpoint.SetTraceLogging(clientName, loggingConfig); IPataPawaPostPayService channel = client.ChannelFactory.CreateChannel(new EndpointAddress(url)); return channel; diff --git a/TransactionProcessor/Common/ClientMessageLogger.cs b/TransactionProcessor/Common/ClientMessageLogger.cs index 22cc065a..07516f21 100644 --- a/TransactionProcessor/Common/ClientMessageLogger.cs +++ b/TransactionProcessor/Common/ClientMessageLogger.cs @@ -1,4 +1,7 @@ -namespace TransactionProcessor.Common; +using Microsoft.Extensions.Logging; +using Shared.Middleware; + +namespace TransactionProcessor.Common; using System; using System.Diagnostics.CodeAnalysis; @@ -13,27 +16,56 @@ internal sealed class ClientMessageLogger : #region Fields private readonly String ClientName; + private readonly RequestResponseMiddlewareLoggingConfig Config; + + private enum LogType + { + Request, + Response + } #endregion #region Constructors - public ClientMessageLogger(String clientName){ + public ClientMessageLogger(String clientName, RequestResponseMiddlewareLoggingConfig config) + { this.ClientName = clientName; + Config = config; } #endregion #region Methods - public void AfterReceiveReply(ref Message reply, Object correlationState){ - Logger.LogInformation($"Received SOAP reply from {this.ClientName}:\r\n{reply}"); - } + public void AfterReceiveReply(ref Message reply, Object correlationState) => LogMessage(LogType.Request,$"Received SOAP reply from {this.ClientName}:\r\n{reply}"); + - public Object BeforeSendRequest(ref Message request, IClientChannel channel){ - Logger.LogInformation($"Sending SOAP request to {this.ClientName}:\r\n{request}"); + public Object BeforeSendRequest(ref Message request, IClientChannel channel) + { + LogMessage(LogType.Response, $"Sending SOAP request to {this.ClientName}:\r\n{request}"); return null; } + + private void LogMessage(LogType type, String message) + { + if (Config.LogRequests == false && type == LogType.Request) + return; + if (Config.LogResponses == false && type == LogType.Response) + return; + + Action action = Config.LoggingLevel switch + { + LogLevel.Warning => () => Logger.LogWarning(message), + LogLevel.Information => () => Logger.LogInformation(message), + LogLevel.Debug => () => Logger.LogDebug(message), + LogLevel.Trace => () => Logger.LogTrace(message), + _ => () => Logger.LogInformation(message) + }; + + action(); + } + #endregion } \ No newline at end of file diff --git a/TransactionProcessor/Common/ClientMessageLoggingBehavior.cs b/TransactionProcessor/Common/ClientMessageLoggingBehavior.cs index a974b6ee..be9de33f 100644 --- a/TransactionProcessor/Common/ClientMessageLoggingBehavior.cs +++ b/TransactionProcessor/Common/ClientMessageLoggingBehavior.cs @@ -1,4 +1,6 @@ -namespace TransactionProcessor.Common; +using Shared.Middleware; + +namespace TransactionProcessor.Common; using System; using System.ServiceModel.Channels; @@ -10,13 +12,16 @@ internal sealed class ClientMessageLoggingBehavior : #region Fields private readonly String ClientName; + private readonly RequestResponseMiddlewareLoggingConfig Config; #endregion #region Constructors - public ClientMessageLoggingBehavior(String clientName){ + public ClientMessageLoggingBehavior(String clientName, RequestResponseMiddlewareLoggingConfig config) + { this.ClientName = clientName; + Config = config; } #endregion @@ -27,7 +32,7 @@ public void AddBindingParameters(ServiceEndpoint endpoint, BindingParameterColle } public void ApplyClientBehavior(ServiceEndpoint endpoint, ClientRuntime clientRuntime){ - clientRuntime.ClientMessageInspectors.Add(new ClientMessageLogger(this.ClientName)); + clientRuntime.ClientMessageInspectors.Add(new ClientMessageLogger(this.ClientName, this.Config)); } public void ApplyDispatchBehavior(ServiceEndpoint endpoint, EndpointDispatcher endpointDispatcher){ diff --git a/TransactionProcessor/Common/ServiceEndpointExtensions.cs b/TransactionProcessor/Common/ServiceEndpointExtensions.cs index 5e869c12..97238790 100644 --- a/TransactionProcessor/Common/ServiceEndpointExtensions.cs +++ b/TransactionProcessor/Common/ServiceEndpointExtensions.cs @@ -1,4 +1,6 @@ -namespace TransactionProcessor.Common; +using Shared.Middleware; + +namespace TransactionProcessor.Common; using System; using System.ServiceModel.Description; @@ -6,9 +8,9 @@ public static class ServiceEndpointExtensions{ #region Methods - public static void SetTraceLogging(this ServiceEndpoint serviceEndpoint, String clientName){ + public static void SetTraceLogging(this ServiceEndpoint serviceEndpoint, String clientName, RequestResponseMiddlewareLoggingConfig config){ if (serviceEndpoint.EndpointBehaviors.Contains(typeof(ClientMessageLoggingBehavior)) == false){ - serviceEndpoint.EndpointBehaviors.Add(new ClientMessageLoggingBehavior(clientName)); + serviceEndpoint.EndpointBehaviors.Add(new ClientMessageLoggingBehavior(clientName, config)); } } diff --git a/TransactionProcessor/Controllers/DomainEventController.cs b/TransactionProcessor/Controllers/DomainEventController.cs index 6a93e00a..fdbc31d2 100644 --- a/TransactionProcessor/Controllers/DomainEventController.cs +++ b/TransactionProcessor/Controllers/DomainEventController.cs @@ -66,12 +66,12 @@ public async Task PostEventAsync([FromBody] Object request, try { - Logger.LogInformation($"Processing event - ID [{domainEvent.EventId}], Type[{domainEvent.GetType().Name}]"); + Logger.LogWarning($"Processing event - ID [{domainEvent.EventId}], Type[{domainEvent.GetType().Name}]"); if (eventHandlers == null || eventHandlers.Any() == false) { // Log a warning out - Logger.LogWarning($"No event handlers configured for Event Type [{domainEvent.GetType().Name}]"); + Logger.LogInformation($"No event handlers configured for Event Type [{domainEvent.GetType().Name}]"); return this.Ok(); } @@ -83,7 +83,7 @@ public async Task PostEventAsync([FromBody] Object request, Task.WaitAll(tasks.ToArray()); - Logger.LogInformation($"Finished processing event - ID [{domainEvent.EventId}]"); + Logger.LogWarning($"Finished processing event - ID [{domainEvent.EventId}]"); return this.Ok(); } diff --git a/TransactionProcessor/Startup.cs b/TransactionProcessor/Startup.cs index 8bcd6088..78ec19ad 100644 --- a/TransactionProcessor/Startup.cs +++ b/TransactionProcessor/Startup.cs @@ -4,46 +4,24 @@ namespace TransactionProcessor using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.IO; - using System.Linq; - using System.Net.Http; using System.Reflection; - using System.Runtime.InteropServices.ComTypes; - using System.Threading; using Bootstrapper; - using EstateManagement.Estate.DomainEvents; - using EstateManagement.Merchant.DomainEvents; - using EventStore.Client; - using FileProcessor.File.DomainEvents; - using FileProcessor.FileImportLog.DomainEvents; - using Float.DomainEvents; using HealthChecks.UI.Client; using Lamar; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Diagnostics.HealthChecks; using Microsoft.AspNetCore.Hosting; - using Microsoft.Extensions.Caching.Memory; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using NLog; using NLog.Extensions.Logging; - using NuGet.Protocol; - using ProjectionEngine.EventHandling; - using Reconciliation.DomainEvents; - using Settlement.DomainEvents; - using Shared.DomainDrivenDesign.EventSourcing; using Shared.EventStore.Aggregate; - using Shared.EventStore.EventHandling; using Shared.Extensions; using Shared.General; - using Transaction.DomainEvents; - using TransactionProcessor.BusinessLogic.OperatorInterfaces; - using Voucher.DomainEvents; - using EventHandler = ProjectionEngine.EventHandling.EventHandler; using ILogger = Microsoft.Extensions.Logging.ILogger; using Logger = Shared.Logger.Logger; - using SetupBuilderExtensions = NLog.SetupBuilderExtensions; /// /// @@ -123,14 +101,16 @@ public void Configure(IApplicationBuilder app, 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(); @@ -139,8 +119,7 @@ public void Configure(IApplicationBuilder app, Logger.Initialise(logger); - Action loggerAction = Logger.LogInformation; - Startup.Configuration.LogConfiguration(loggerAction); + Startup.Configuration.LogConfiguration(Logger.LogWarning); foreach (KeyValuePair type in TypeMap.Map) { Logger.LogInformation($"Type name {type.Value} mapped to {type.Key.Name}"); diff --git a/TransactionProcessor/TransactionProcessor.csproj b/TransactionProcessor/TransactionProcessor.csproj index 175ea053..691f9afa 100644 --- a/TransactionProcessor/TransactionProcessor.csproj +++ b/TransactionProcessor/TransactionProcessor.csproj @@ -35,8 +35,8 @@ - - + + diff --git a/TransactionProcessor/nlog.config b/TransactionProcessor/nlog.config index 5a5d9937..191647a5 100644 --- a/TransactionProcessor/nlog.config +++ b/TransactionProcessor/nlog.config @@ -22,14 +22,23 @@ + + - - + + - + From 414cee4a4c099bd91b8afc44e992c0ea013ed016 Mon Sep 17 00:00:00 2001 From: Stuart Ferguson Date: Tue, 2 Jul 2024 11:14:31 +0100 Subject: [PATCH 2/2] fix unit tests --- .../Bootstrapper/OperatorRegistry.cs | 19 +++++++++++-------- TransactionProcessor/Startup.cs | 3 ++- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/TransactionProcessor/Bootstrapper/OperatorRegistry.cs b/TransactionProcessor/Bootstrapper/OperatorRegistry.cs index a2c18935..2c520416 100644 --- a/TransactionProcessor/Bootstrapper/OperatorRegistry.cs +++ b/TransactionProcessor/Bootstrapper/OperatorRegistry.cs @@ -49,14 +49,17 @@ public OperatorRegistry() this.For().Add().Named("PataPawaPrePay").Singleton(); this.For().Add().Named("Voucher").Singleton(); - var loggingConfig = Startup.Container.GetInstance(); - this.AddTransient>(context => (client,clientName, - url) => { - client.Endpoint.SetTraceLogging(clientName, loggingConfig); - IPataPawaPostPayService channel = - client.ChannelFactory.CreateChannel(new EndpointAddress(url)); - return channel; - }); + + this.AddTransient>(context => + (client, clientName, + url) => + { + var loggingConfig = Startup.Container.GetInstance(); + client.Endpoint.SetTraceLogging(clientName, loggingConfig); + IPataPawaPostPayService channel = + client.ChannelFactory.CreateChannel(new EndpointAddress(url)); + return channel; + }); this.AddTransient>(context => operatorIdentifier => { diff --git a/TransactionProcessor/Startup.cs b/TransactionProcessor/Startup.cs index 78ec19ad..338581d2 100644 --- a/TransactionProcessor/Startup.cs +++ b/TransactionProcessor/Startup.cs @@ -161,6 +161,7 @@ public void ConfigureContainer(ServiceRegistry services) { ConfigurationReader.Initialise(Startup.Configuration); + services.IncludeRegistry(); services.IncludeRegistry(); services.IncludeRegistry(); services.IncludeRegistry(); @@ -168,7 +169,7 @@ public void ConfigureContainer(ServiceRegistry services) { services.IncludeRegistry(); services.IncludeRegistry(); services.IncludeRegistry(); - services.IncludeRegistry(); + services.AddMemoryCache(); TypeProvider.LoadDomainEventsTypeDynamically();