From b5727023f8ae60263e1d490d63d9473ed4f8f308 Mon Sep 17 00:00:00 2001 From: jkeane Date: Thu, 18 Mar 2021 08:58:25 -0500 Subject: [PATCH] Customer bug fixes and enhancements to Activity History and deployment settings (#562) * Remove aadUpdateMode from QA settings to prevent overwrite, #556 * Added Message attribute to model, #560 * Update Activity document on status change, #559 Added Message attribute for failure message to Activity document, #560 * missing status set * added source to contextcreate * added serialization settings for http/json results * fixed syntax * Update local build to 1.0, #561 --- .github/workflows/appConfigSettingsQA.json | 3 +- .../GraphDeltaProcessorFunctionsTests.cs | 30 ++++++------- .../Discover/DiscoverSpStateDefinitionBase.cs | 2 +- .../Mocks/DefaultActivityService.cs | 3 +- .../ServicePrincipalProcessorTests.cs | 4 +- .../CSE.Automation/CSE.Automation.csproj | 1 + .../CSE.Automation/GraphDeltaProcessor.cs | 43 ++++++++++--------- .../Interfaces/IActivityService.cs | 2 +- .../CSE.Automation/Model/ActivityContext.cs | 16 ++++++- .../CSE.Automation/Model/ActivityHistory.cs | 5 +++ .../Services/ActivityService.cs | 4 +- src/Automation/CSE.Automation/Startup.cs | 2 +- 12 files changed, 69 insertions(+), 46 deletions(-) diff --git a/.github/workflows/appConfigSettingsQA.json b/.github/workflows/appConfigSettingsQA.json index 1be694c3..42e8e409 100644 --- a/.github/workflows/appConfigSettingsQA.json +++ b/.github/workflows/appConfigSettingsQA.json @@ -6,6 +6,5 @@ "SPDeltaDiscoverySchedule": "0 */30 * * * *", "SPDiscoverQueue": "discoverqa", "SPEvaluateQueue": "evaluateqa", - "SPUpdateQueue": "updateqa", - "aadUpdateMode": "ReportOnly" + "SPUpdateQueue": "updateqa" } diff --git a/src/Automation/CSE.Automation.Tests/IntegrationTests/GraphDeltaProcessorFunctionsTests.cs b/src/Automation/CSE.Automation.Tests/IntegrationTests/GraphDeltaProcessorFunctionsTests.cs index be5144dc..dd75160e 100644 --- a/src/Automation/CSE.Automation.Tests/IntegrationTests/GraphDeltaProcessorFunctionsTests.cs +++ b/src/Automation/CSE.Automation.Tests/IntegrationTests/GraphDeltaProcessorFunctionsTests.cs @@ -281,7 +281,7 @@ public void FunctionEvaluateTestCase1() TestCase thisTestCase = testCaseCollection.TC1; - using var activityContext = _activityService.CreateContext($"Integration Test - EVALUATE Test Case [{thisTestCase}] ", withTracking: true); + using var activityContext = _activityService.CreateContext($"Integration Test - EVALUATE Test Case [{thisTestCase}] ", "TEST", withTracking: true); using var inputGenerator = new EvaluateInputGenerator(_config, _graphHelperSettings, testCaseCollection, thisTestCase); @@ -323,7 +323,7 @@ public void FunctionEvaluateTestCase2() TestCase thisTestCase = testCaseCollection.TC2; - using var activityContext = _activityService.CreateContext($"Integration Test - EVALUATE Test Case [{thisTestCase}] ", withTracking: true); + using var activityContext = _activityService.CreateContext($"Integration Test - EVALUATE Test Case [{thisTestCase}] ", "TEST", withTracking: true); using var inputGenerator = new EvaluateInputGenerator(_config, _graphHelperSettings,testCaseCollection, thisTestCase); @@ -364,7 +364,7 @@ public void FunctionEvaluateTestCase2_2() TestCase thisTestCase = testCaseCollection.TC2_2; - using var activityContext = _activityService.CreateContext($"Integration Test - EVALUATE Test Case [{thisTestCase}] ", withTracking: true); + using var activityContext = _activityService.CreateContext($"Integration Test - EVALUATE Test Case [{thisTestCase}] ", "TEST", withTracking: true); using var inputGenerator = new EvaluateInputGenerator(_config, _graphHelperSettings, testCaseCollection, thisTestCase); @@ -405,7 +405,7 @@ public void FunctionEvaluateTestCase3() TestCase thisTestCase = testCaseCollection.TC3; - using var activityContext = _activityService.CreateContext($"Integration Test - EVALUATE Test Case [{thisTestCase}] ", withTracking: true); + using var activityContext = _activityService.CreateContext($"Integration Test - EVALUATE Test Case [{thisTestCase}] ", "TEST", withTracking: true); using var inputGenerator = new EvaluateInputGenerator(_config, _graphHelperSettings, testCaseCollection, thisTestCase); @@ -439,7 +439,7 @@ public void FunctionEvaluateTestCase3_2() TestCase thisTestCase = testCaseCollection.TC3_2; - using var activityContext = _activityService.CreateContext($"Integration Test - EVALUATE Test Case [{thisTestCase}] ", withTracking: true); + using var activityContext = _activityService.CreateContext($"Integration Test - EVALUATE Test Case [{thisTestCase}] ", "TEST", withTracking: true); using var inputGenerator = new EvaluateInputGenerator(_config, _graphHelperSettings, testCaseCollection, thisTestCase); @@ -480,7 +480,7 @@ public void FunctionEvaluateTestCase4() TestCase thisTestCase = testCaseCollection.TC4; - using var activityContext = _activityService.CreateContext($"Integration Test - EVALUATE Test Case [{thisTestCase}] ", withTracking: true); + using var activityContext = _activityService.CreateContext($"Integration Test - EVALUATE Test Case [{thisTestCase}] ", "TEST", withTracking: true); using var inputGenerator = new EvaluateInputGenerator(_config, _graphHelperSettings, testCaseCollection, thisTestCase); @@ -522,7 +522,7 @@ public void FunctionEvaluateTestCase5() TestCase thisTestCase = testCaseCollection.TC5; - using var activityContext = _activityService.CreateContext($"Integration Test - EVALUATE Test Case [{thisTestCase}] ", withTracking: true); + using var activityContext = _activityService.CreateContext($"Integration Test - EVALUATE Test Case [{thisTestCase}] ", "TEST", withTracking: true); using var inputGenerator = new EvaluateInputGenerator(_config, _graphHelperSettings, testCaseCollection, thisTestCase); @@ -564,7 +564,7 @@ public void FunctionEvaluateTestCase6() TestCase thisTestCase = testCaseCollection.TC6; - using var activityContext = _activityService.CreateContext($"Integration Test - EVALUATE Test Case [{thisTestCase}] ", withTracking: true); + using var activityContext = _activityService.CreateContext($"Integration Test - EVALUATE Test Case [{thisTestCase}] ", "TEST", withTracking: true); using var inputGenerator = new EvaluateInputGenerator(_config, _graphHelperSettings, testCaseCollection, thisTestCase); @@ -599,7 +599,7 @@ public void FunctionDiscoverTestCase1() TestCase thisTestCase = testCaseCollection.TC1; - using var activityContext = _activityService.CreateContext($"Integration Test - DISCOVER Test Case [{thisTestCase}] ", withTracking: true); + using var activityContext = _activityService.CreateContext($"Integration Test - DISCOVER Test Case [{thisTestCase}] ", "TEST", withTracking: true); GraphDeltaProcessorWrapper graphDeltaProcessorWrapper = _graphDeltaProcessorWrapperFactory.GetNewGraphDeltaProcessorWrapper(); @@ -648,7 +648,7 @@ public void FunctionDiscoverTestCase1_2() TestCase thisTestCase = testCaseCollection.TC1_2; - using var activityContext = _activityService.CreateContext($"Integration Test - DISCOVER Test Case [{thisTestCase}] ", withTracking: true); + using var activityContext = _activityService.CreateContext($"Integration Test - DISCOVER Test Case [{thisTestCase}] ", "TEST", withTracking: true); GraphDeltaProcessorWrapper graphDeltaProcessorWrapper = _graphDeltaProcessorWrapperFactory.GetNewGraphDeltaProcessorWrapper(); @@ -701,7 +701,7 @@ public void FunctionDiscoverTestCase2() TestCase thisTestCase = testCaseCollection.TC2; - using var activityContext = _activityService.CreateContext($"Integration Test - DISCOVER Test Case [{thisTestCase}] ", withTracking: true); + using var activityContext = _activityService.CreateContext($"Integration Test - DISCOVER Test Case [{thisTestCase}] ", "TEST", withTracking: true); GraphDeltaProcessorWrapper graphDeltaProcessorWrapper = _graphDeltaProcessorWrapperFactory.GetNewGraphDeltaProcessorWrapper(); @@ -759,7 +759,7 @@ public void FunctionDiscoverTestCase3() using var inputGenerator = new DiscoverInputGenerator(_config, _graphHelperSettings, testCaseCollection, thisTestCase, graphDeltaProcessorWrapper.ConfigId, graphDeltaProcessorHelper); - using var activityContext = _activityService.CreateContext($"Integration Test - DISCOVER Test Case [{thisTestCase}] ", withTracking: true); + using var activityContext = _activityService.CreateContext($"Integration Test - DISCOVER Test Case [{thisTestCase}] ", "TEST", withTracking: true); CloudQueueMessage cloudQueueMessage = new CloudQueueMessage(inputGenerator.GetTestMessageContent(DiscoveryMode.Deltas, "HTTP", activityContext)); @@ -801,7 +801,7 @@ public void FunctionUpdateTestCase1() TestCase thisTestCase = testCaseCollection.TC1; - using var activityContext = _activityService.CreateContext($"Integration Test - UPDATE Test Case [{thisTestCase}] ", withTracking: true); + using var activityContext = _activityService.CreateContext($"Integration Test - UPDATE Test Case [{thisTestCase}] ", "TEST", withTracking: true); using var inputGenerator = new UpdateInputGenerator(_config, _graphHelperSettings, testCaseCollection, thisTestCase); @@ -841,7 +841,7 @@ public void FunctionUpdateTestCase2() TestCase thisTestCase = testCaseCollection.TC2; - using var activityContext = _activityService.CreateContext($"Integration Test - UPDATE Test Case [{thisTestCase}] ", withTracking: true); + using var activityContext = _activityService.CreateContext($"Integration Test - UPDATE Test Case [{thisTestCase}] ", "TEST", withTracking: true); using var inputGenerator = new UpdateInputGenerator(_config, _graphHelperSettings, testCaseCollection, thisTestCase); @@ -877,7 +877,7 @@ public void FunctionUpdateTestCase3() TestCase thisTestCase = testCaseCollection.TC3; - using var activityContext = _activityService.CreateContext($"Integration Test - UPDATE Test Case [{thisTestCase}] ", withTracking: true); + using var activityContext = _activityService.CreateContext($"Integration Test - UPDATE Test Case [{thisTestCase}] ", "TEST", withTracking: true); using var inputGenerator = new UpdateInputGenerator(_config, _graphHelperSettings, testCaseCollection, thisTestCase); diff --git a/src/Automation/CSE.Automation.Tests/IntegrationTests/TestCaseValidators/ServicePrincipalStates/Discover/DiscoverSpStateDefinitionBase.cs b/src/Automation/CSE.Automation.Tests/IntegrationTests/TestCaseValidators/ServicePrincipalStates/Discover/DiscoverSpStateDefinitionBase.cs index 8366960a..49c253e9 100644 --- a/src/Automation/CSE.Automation.Tests/IntegrationTests/TestCaseValidators/ServicePrincipalStates/Discover/DiscoverSpStateDefinitionBase.cs +++ b/src/Automation/CSE.Automation.Tests/IntegrationTests/TestCaseValidators/ServicePrincipalStates/Discover/DiscoverSpStateDefinitionBase.cs @@ -62,7 +62,7 @@ protected bool RunFullSeedDiscovery() TestCase thisTestCase = testCaseCollection.TC1; - using var activityContext = GraphDeltaProcessorHelper.ActivityServiceInstance.CreateContext($"Nested execution Integration Test - Test Case [{thisTestCase}] ", withTracking: true); + using var activityContext = GraphDeltaProcessorHelper.ActivityServiceInstance.CreateContext($"Nested execution Integration Test - Test Case [{thisTestCase}] ", "TEST", withTracking: true); GraphDeltaProcessorHelper.DeleteDynamicCreatedServicePrincipals = false; string mainTestCaseConfigId = GraphDeltaProcessorHelper.MainTestCaseConfigId; diff --git a/src/Automation/CSE.Automation.Tests/Mocks/DefaultActivityService.cs b/src/Automation/CSE.Automation.Tests/Mocks/DefaultActivityService.cs index b9815aa5..d0963848 100644 --- a/src/Automation/CSE.Automation.Tests/Mocks/DefaultActivityService.cs +++ b/src/Automation/CSE.Automation.Tests/Mocks/DefaultActivityService.cs @@ -34,7 +34,7 @@ public Task> GetCorrelated(string correlationId) throw new NotImplementedException(); } - public ActivityContext CreateContext(string name, string correlationId = null, bool withTracking = false) + public ActivityContext CreateContext(string name, string source, string correlationId = null, bool withTracking = false) { var now = DateTimeOffset.Now; @@ -46,6 +46,7 @@ public ActivityContext CreateContext(string name, string correlationId = null, b Created = now, Name = name, Status = ActivityHistoryStatus.Running, + CommandSource = source, }; // we need the id of the run when we initiate diff --git a/src/Automation/CSE.Automation.Tests/UnitTests/Processors/ServicePrincipalProcessorTests.cs b/src/Automation/CSE.Automation.Tests/UnitTests/Processors/ServicePrincipalProcessorTests.cs index 16d5b393..7684d0f5 100644 --- a/src/Automation/CSE.Automation.Tests/UnitTests/Processors/ServicePrincipalProcessorTests.cs +++ b/src/Automation/CSE.Automation.Tests/UnitTests/Processors/ServicePrincipalProcessorTests.cs @@ -199,7 +199,7 @@ private async Task Evaluate(ServicePrincipalEvaluateTestData testData, AuditActi var activityService = fixture.Host.Services.GetService() as DefaultActivityService; Assert.NotNull(activityService); - var context = activityService.CreateContext("Test Case"); + var context = activityService.CreateContext("Test Case", "Evaluate TEST"); await processor.Evaluate(context, testData.Target).ConfigureAwait(false); @@ -338,7 +338,7 @@ private async Task Discover(ServicePrincipalDiscoverTestData testData) var activityService = fixture.Host.Services.GetService() as DefaultActivityService; Assert.NotNull(activityService); - var context = activityService.CreateContext("Test Case").WithCorrelationId(testData.Target.CorrelationId); + var context = activityService.CreateContext("Test Case", "Discover TEST").WithCorrelationId(testData.Target.CorrelationId); await processor.DiscoverDeltas(context, testData.Target.DiscoveryMode == DiscoveryMode.FullSeed); diff --git a/src/Automation/CSE.Automation/CSE.Automation.csproj b/src/Automation/CSE.Automation/CSE.Automation.csproj index 8e3c2b6b..f31a8c62 100644 --- a/src/Automation/CSE.Automation/CSE.Automation.csproj +++ b/src/Automation/CSE.Automation/CSE.Automation.csproj @@ -9,6 +9,7 @@ true $([System.DateTime]::UtcNow.ToString("o")) en-US + 1.0-local diff --git a/src/Automation/CSE.Automation/GraphDeltaProcessor.cs b/src/Automation/CSE.Automation/GraphDeltaProcessor.cs index 640b975d..2d3b0920 100644 --- a/src/Automation/CSE.Automation/GraphDeltaProcessor.cs +++ b/src/Automation/CSE.Automation/GraphDeltaProcessor.cs @@ -26,6 +26,7 @@ internal class GraphDeltaProcessor private readonly IActivityService activityService; private readonly IServicePrincipalProcessor processor; private readonly ILogger logger; + private readonly JsonSerializerSettings httpJsonSerializerSettings; public GraphDeltaProcessor(VersionMetadata versionMetadata, IServiceProvider serviceProvider, IActivityService activityService, IServicePrincipalProcessor processor, ILogger logger) { @@ -33,6 +34,11 @@ public GraphDeltaProcessor(VersionMetadata versionMetadata, IServiceProvider ser this.activityService = activityService; this.processor = processor; this.logger = logger; + this.httpJsonSerializerSettings = new JsonSerializerSettings() + { + Formatting = Formatting.None, + NullValueHandling = NullValueHandling.Ignore, + }; ValidateServices(serviceProvider); } @@ -78,7 +84,7 @@ public async Task RequestDiscovery([HttpTrigger(AuthorizationLeve return hasRedirect ? new RedirectResult($"{uriBuilder.Uri}") - : (IActionResult)new JsonResult(result); + : (IActionResult)new JsonResult(result, httpJsonSerializerSettings); } catch (Exception ex) { @@ -135,24 +141,21 @@ public async Task Discover([QueueTrigger(Constants.DiscoverQueueAppSetting)] Clo } var operation = command.DiscoveryMode.Description(); - using var context = activityService.CreateContext(operation, correlationId: command.CorrelationId, withTracking: true); + using var context = activityService.CreateContext(operation, command.Source, correlationId: command.CorrelationId, withTracking: true); try { log.LogDebug($"Executing Discover QueueTrigger Function - [{context.CorrelationId}/{context.Activity.Id}]"); - context.Activity.CommandSource = command.Source; context.WithProcessorLock(processor); } catch (Exception ex) { - if (context != null) - { - context.Activity.Status = ActivityHistoryStatus.Failed; - } - ex.Data["activityContext"] = context; log.LogError(ex, Resources.LockConflictMessage); + + context?.AsStatus(ActivityHistoryStatus.Failed, Resources.LockConflictMessage); + return; // this will delete the message, we don't want to retry } @@ -164,10 +167,10 @@ await processor } catch (Exception ex) { - context.Activity.Status = ActivityHistoryStatus.Failed; - ex.Data["activityContext"] = context; log.LogError(ex, Resources.ServicePrincipalDiscoverException); + + context?.AsStatus(ActivityHistoryStatus.Failed, Resources.ServicePrincipalDiscoverException); } } @@ -199,8 +202,7 @@ public async Task Evaluate([QueueTrigger(Constants.EvaluateQueueAppSetting)] Clo ActivityContext context = null; try { - context = activityService.CreateContext("Evaluate Service Principal", command.CorrelationId); - context.Activity.CommandSource = "QUEUE"; + context = activityService.CreateContext("Evaluate Service Principal", "QUEUE", command.CorrelationId); await processor.Evaluate(context, command.Model).ConfigureAwait(false); @@ -253,8 +255,7 @@ public async Task UpdateAAD([QueueTrigger(Constants.UpdateQueueAppSetting)]Cloud ActivityContext context = null; try { - context = activityService.CreateContext("Update Service Principal", command.CorrelationId); - context.Activity.CommandSource = "QUEUE"; + context = activityService.CreateContext("Update Service Principal", "QUEUE", command.CorrelationId); var message = JsonConvert.DeserializeObject>(msg.AsString); @@ -293,7 +294,7 @@ public async Task Activities([HttpTrigger(AuthorizationLevel.Func var activityId = req.Query["activityId"]; var correlationId = req.Query["correlationId"]; - using var context = activityService.CreateContext("Activities", withTracking: false); + using var context = activityService.CreateContext("Activities", "HTTP", withTracking: false); try { log.LogDebug("Executing ActivityStatus HttpTrigger Function"); @@ -313,7 +314,7 @@ public async Task Activities([HttpTrigger(AuthorizationLevel.Func context.ElapsedTime, }; - return new JsonResult(result); + return new JsonResult(result, httpJsonSerializerSettings); } catch (Exception ex) { @@ -337,7 +338,7 @@ public async Task Activities([HttpTrigger(AuthorizationLevel.Func public Task Version([HttpTrigger(AuthorizationLevel.Function, "get")] HttpRequest req, ILogger log) { log.LogInformation(this.versionMetadata.ProductVersion); - return Task.FromResult((IActionResult)new JsonResult(this.versionMetadata)); + return Task.FromResult((IActionResult)new JsonResult(this.versionMetadata, httpJsonSerializerSettings)); } [System.Diagnostics.CodeAnalysis.SuppressMessage("Design", "CA1031:Do not catch general exception types", Justification = "Ensure graceful return under all trappable error conditions.")] @@ -347,9 +348,8 @@ private async Task CommandDiscovery(DiscoveryMode discoveryMode, string try { - context = activityService.CreateContext($"{discoveryMode.Description()} Request", withTracking: true); + context = activityService.CreateContext($"{discoveryMode.Description()} Request", source, withTracking: true); - context.Activity.CommandSource = source; await processor.RequestDiscovery(context, discoveryMode, source).ConfigureAwait(false); var result = new { @@ -365,14 +365,15 @@ private async Task CommandDiscovery(DiscoveryMode discoveryMode, string } catch (Exception ex) { + var message = $"Failed to request Discovery {discoveryMode}"; + if (context != null) { context.Activity.Status = ActivityHistoryStatus.Failed; - + context.Activity.Message = message; ex.Data["activityContext"] = context; } - var message = $"Failed to request Discovery {discoveryMode}"; log.LogError(ex, message); throw; diff --git a/src/Automation/CSE.Automation/Interfaces/IActivityService.cs b/src/Automation/CSE.Automation/Interfaces/IActivityService.cs index eba2ef68..e6328c8e 100644 --- a/src/Automation/CSE.Automation/Interfaces/IActivityService.cs +++ b/src/Automation/CSE.Automation/Interfaces/IActivityService.cs @@ -16,6 +16,6 @@ internal interface IActivityService Task Put(ActivityHistory document); Task Get(string id); Task> GetCorrelated(string correlationId); - ActivityContext CreateContext(string name, string correlationId = null, bool withTracking = false); + ActivityContext CreateContext(string name, string source, string correlationId = null, bool withTracking = false); } } diff --git a/src/Automation/CSE.Automation/Model/ActivityContext.cs b/src/Automation/CSE.Automation/Model/ActivityContext.cs index 111bbd5c..59c551c7 100644 --- a/src/Automation/CSE.Automation/Model/ActivityContext.cs +++ b/src/Automation/CSE.Automation/Model/ActivityContext.cs @@ -44,7 +44,7 @@ public void End(ActivityHistoryStatus status = ActivityHistoryStatus.Completed) throw new ArgumentOutOfRangeException(nameof(status)); } - this.Activity.Status = ActivityHistoryStatus.Completed; + AsStatus(ActivityHistoryStatus.Completed); if (Timer is null) { @@ -65,13 +65,27 @@ public ActivityContext WithProcessorLock(IDeltaProcessor deltaProcessor) throw new ArgumentNullException(nameof(deltaProcessor)); } + // Lock the configuration deltaProcessor.Lock(this.Activity.Id).Wait(); + // Mark the activity as running + AsStatus(ActivityHistoryStatus.Running); + isLocked = true; processor = deltaProcessor; return this; } + public ActivityContext AsStatus(ActivityHistoryStatus status, string message = default) + { + this.Activity.Status = status; + this.Activity.Message = message; + + activityService?.Put(this.Activity); + + return this; + } + /// /// Set the correlation id of the activity in the context. /// diff --git a/src/Automation/CSE.Automation/Model/ActivityHistory.cs b/src/Automation/CSE.Automation/Model/ActivityHistory.cs index 26e337e5..14788a62 100644 --- a/src/Automation/CSE.Automation/Model/ActivityHistory.cs +++ b/src/Automation/CSE.Automation/Model/ActivityHistory.cs @@ -32,6 +32,11 @@ internal class ActivityHistory /// public ActivityHistoryStatus Status { get; set; } + /// + /// Gets or sets a message in case of a Status of Failed. + /// + public string Message { get; set; } + /// /// Gets or sets the metrics for the run /// diff --git a/src/Automation/CSE.Automation/Services/ActivityService.cs b/src/Automation/CSE.Automation/Services/ActivityService.cs index 584bf235..c239aaf0 100644 --- a/src/Automation/CSE.Automation/Services/ActivityService.cs +++ b/src/Automation/CSE.Automation/Services/ActivityService.cs @@ -56,10 +56,11 @@ public async Task> GetCorrelated(string correlation /// Create an instance of an ActivityHistory model /// /// Name of the activity + /// Source of the activity create request /// Correlation ObjectId of the activity /// True if the activity is tracked in ActivityHistory /// A new instance of . - public ActivityContext CreateContext(string name, string correlationId = null, bool withTracking = false) + public ActivityContext CreateContext(string name, string source, string correlationId = null, bool withTracking = false) { var now = DateTimeOffset.Now; @@ -71,6 +72,7 @@ public ActivityContext CreateContext(string name, string correlationId = null, b Created = now, Name = name, Status = ActivityHistoryStatus.Running, + CommandSource = source, }; // we need the id of the run when we initiate diff --git a/src/Automation/CSE.Automation/Startup.cs b/src/Automation/CSE.Automation/Startup.cs index 66b984cb..5264ad89 100644 --- a/src/Automation/CSE.Automation/Startup.cs +++ b/src/Automation/CSE.Automation/Startup.cs @@ -72,7 +72,7 @@ private static ILogger CreateBootstrapLogger() var serviceProvider = new ServiceCollection() .AddLogging(builder => { - builder.AddConsole(); + // builder.AddConsole(); builder.AddDebug(); }) .BuildServiceProvider();