From 5a14e6dd15756cfac9c7a9812afd2be87e9414ab Mon Sep 17 00:00:00 2001 From: Paul Mcilreavy Date: Thu, 1 Apr 2021 22:06:15 +1000 Subject: [PATCH] vnext (#35) * logging fixes --- docker-compose.yml | 4 ++- docker-run.ps1 | 1 + .../Extensions/HttpContextExtensions.cs | 6 +--- src/AzureEventGridSimulator/Program.cs | 34 +++++-------------- src/AzureEventGridSimulator/Startup.cs | 5 ++- .../example.appsettings.json | 5 --- 6 files changed, 18 insertions(+), 37 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 3947cfd..c3c650b 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -27,7 +27,9 @@ services: # add an Azure Function subscriber running on localhost (host.docker.internal) - AEGS_Topics__0__subscribers__1__name=AzureFunctionSubscription - AEGS_Topics__0__subscribers__1__endpoint=http://host.docker.internal:7071/runtime/webhooks/EventGrid?functionName=ExampleFunction - - AEGS_Topics__0__subscribers__1__disableValidation=true + - AEGS_Topics__0__subscribers__1__disableValidation=false + # logging configuration + - AEGS_Serilog__MinimumLevel__Default=Verbose # you could also define topics/subscribers via via a configfile # - ConfigFile=/aegs/appsettings.docker.json diff --git a/docker-run.ps1 b/docker-run.ps1 index 249b529..418501f 100644 --- a/docker-run.ps1 +++ b/docker-run.ps1 @@ -27,5 +27,6 @@ if ($(docker ps --all --filter="name=$containerName") -like "*$containerName*") -e AEGS_Topics__0__subscribers__1__name=AzureFunctionSubscription ` -e AEGS_Topics__0__subscribers__1__endpoint=http://host.docker.internal:7071/runtime/webhooks/EventGrid?functionName=ExampleFunction ` -e AEGS_Topics__0__subscribers__1__disableValidation=true ` + -e AEGS_Serilog__MinimumLevel__Default=Verbose ` $imageName } diff --git a/src/AzureEventGridSimulator/Infrastructure/Extensions/HttpContextExtensions.cs b/src/AzureEventGridSimulator/Infrastructure/Extensions/HttpContextExtensions.cs index 840d121..198e1fc 100644 --- a/src/AzureEventGridSimulator/Infrastructure/Extensions/HttpContextExtensions.cs +++ b/src/AzureEventGridSimulator/Infrastructure/Extensions/HttpContextExtensions.cs @@ -13,11 +13,7 @@ public static async Task RequestBody(this HttpContext context) { var reader = new StreamReader(context.Request.Body); reader.BaseStream.Seek(0, SeekOrigin.Begin); - - var responseString = await reader.ReadToEndAsync(); - reader.BaseStream.Seek(0, SeekOrigin.Begin); - - return responseString; + return await reader.ReadToEndAsync(); } public static async Task WriteErrorResponse(this HttpContext context, HttpStatusCode statusCode, string errorMessage, string code) diff --git a/src/AzureEventGridSimulator/Program.cs b/src/AzureEventGridSimulator/Program.cs index ed8bc60..7f11c66 100644 --- a/src/AzureEventGridSimulator/Program.cs +++ b/src/AzureEventGridSimulator/Program.cs @@ -1,9 +1,9 @@ using System; +using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Reflection; -using System.Text; using AzureEventGridSimulator.Infrastructure.Extensions; using Microsoft.AspNetCore; using Microsoft.AspNetCore.Hosting; @@ -71,7 +71,14 @@ private static IConfigurationRoot BuildConfiguration(string[] args) .AddJsonFile("appsettings.json", true, false) .AddJsonFile($"appsettings.{environmentName}.json", true, false) .AddCustomSimulatorConfigFileIfSpecified(environmentAndCommandLineConfiguration) - .AddEnvironmentVariablesAndCommandLine(args); + .AddEnvironmentVariablesAndCommandLine(args) + .AddInMemoryCollection( + new Dictionary + { + ["AEGS_Serilog__Using__0"] = "Serilog.Sinks.Console", + ["AEGS_Serilog__Using__1"] = "Serilog.Sinks.File", + ["AEGS_Serilog__Using__2"] = "Serilog.Sinks.Seq" + }); return builder.Build(); } @@ -88,8 +95,6 @@ private static IWebHostBuilder ConfigureWebHost(string[] args, IConfiguration co .ConfigureLogging(builder => { builder.ClearProviders(); }) .UseSerilog((context, loggerConfiguration) => { - ShowSerilogUsingWarningIfNecessary(context.Configuration); - var hasAtLeastOneLogSinkBeenConfigured = context.Configuration.GetSection("Serilog:WriteTo").GetChildren().ToArray().Any(); loggerConfiguration @@ -121,26 +126,5 @@ private static IWebHostBuilder ConfigureWebHost(string[] args, IConfiguration co } }); } - - private static void ShowSerilogUsingWarningIfNecessary(IConfiguration config) - { - var usingNeedsToBeConfigured = config.GetSection("Serilog").Exists() && - !config.GetSection("Serilog:Using").Exists(); - - if (usingNeedsToBeConfigured) - { - // Warn the user about the necessity for the serilog using section with .net 5.0. - // https://github.com/serilog/serilog-settings-configuration#net-50-single-file-applications - var msg = new StringBuilder(); - - msg.AppendLine(@"Serilog with .net 5.0 now requires a 'Using' section."); - msg.AppendLine("Please add the following to the 'Serilog' config section and restart: -" + Environment.NewLine); - msg.AppendLine(@"""Using"": [""Serilog.Sinks.Console"", ""Serilog.Sinks.File"", ""Serilog.Sinks.Seq""]"); - - Log.Fatal(msg.ToString()); - - Environment.Exit(-1); - } - } } } diff --git a/src/AzureEventGridSimulator/Startup.cs b/src/AzureEventGridSimulator/Startup.cs index a3a501e..475c201 100644 --- a/src/AzureEventGridSimulator/Startup.cs +++ b/src/AzureEventGridSimulator/Startup.cs @@ -61,7 +61,10 @@ public void Configure(IApplicationBuilder app, app.UseSerilogRequestLogging(options => { options.GetLevel = (httpContext, elapsed, ex) => LogEventLevel.Debug; }); app.UseEventGridMiddleware(); - app.UseMvc(); + app.UseRouting(); + app.UseEndpoints(e => { + e.MapControllers(); + }); } private static async Task OnApplicationStarted(IApplicationBuilder app, IHostApplicationLifetime lifetime, ILogger logger) diff --git a/src/AzureEventGridSimulator/example.appsettings.json b/src/AzureEventGridSimulator/example.appsettings.json index c7b1371..5ad4f61 100644 --- a/src/AzureEventGridSimulator/example.appsettings.json +++ b/src/AzureEventGridSimulator/example.appsettings.json @@ -58,11 +58,6 @@ "System": "Warning" } }, - "Using": [ - "Serilog.Sinks.Console", - "Serilog.Sinks.File", - "Serilog.Sinks.Seq" - ], "WriteTo": [ { "Name": "Console" }, {