From 355ebeb00816f4e5a4dabd67ecf8c7d4e637d17a Mon Sep 17 00:00:00 2001 From: "Collin M. Barrett" Date: Thu, 24 Sep 2020 19:46:19 -0500 Subject: [PATCH] =?UTF-8?q?Revert=20"fix(logging):=20=F0=9F=90=9B=20try=20?= =?UTF-8?q?fix=20AppInisghts=20using=20inline=20initialization"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit e31dc775a7e7a383dc7f9bc4409ee6e577d98d1a. --- .../FilterLists.Archival.Api/Program.cs | 5 +- .../FilterLists.Directory.Api/Program.cs | 6 +-- .../ConfigurationExtensions.cs | 9 +--- .../HostRunner.cs | 51 +++++++++++++++++++ 4 files changed, 58 insertions(+), 13 deletions(-) create mode 100644 services/SharedKernel/FilterLists.SharedKernel.Logging/HostRunner.cs diff --git a/services/Archival/FilterLists.Archival.Api/Program.cs b/services/Archival/FilterLists.Archival.Api/Program.cs index 43431a5ae..c65f57179 100644 --- a/services/Archival/FilterLists.Archival.Api/Program.cs +++ b/services/Archival/FilterLists.Archival.Api/Program.cs @@ -1,7 +1,8 @@ -using System.Threading.Tasks; +using System.Threading.Tasks; using FilterLists.Archival.Application; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Hosting; +using static FilterLists.SharedKernel.Logging.HostRunner; namespace FilterLists.Archival.Api { @@ -10,7 +11,7 @@ public static class Program public static async Task Main(string[] args) { var host = CreateHostBuilder(args).Build(); - await host.RunAsync(); + await host.TryRunWithLoggingAsync(); } public static IHostBuilder CreateHostBuilder(string[] args) diff --git a/services/Directory/FilterLists.Directory.Api/Program.cs b/services/Directory/FilterLists.Directory.Api/Program.cs index aa333b1bc..f5528dafd 100644 --- a/services/Directory/FilterLists.Directory.Api/Program.cs +++ b/services/Directory/FilterLists.Directory.Api/Program.cs @@ -1,8 +1,9 @@ -using System.Threading.Tasks; +using System.Threading.Tasks; using FilterLists.Directory.Application; using FilterLists.Directory.Infrastructure.Persistence; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Hosting; +using static FilterLists.SharedKernel.Logging.HostRunner; namespace FilterLists.Directory.Api { @@ -11,8 +12,7 @@ public static class Program public static async Task Main(string[] args) { var host = CreateHostBuilder(args).Build(); - await host.MigrateAsync(); - await host.RunAsync(); + await host.TryRunWithLoggingAsync(async () => await host.MigrateAsync()); } public static IHostBuilder CreateHostBuilder(string[] args) diff --git a/services/SharedKernel/FilterLists.SharedKernel.Logging/ConfigurationExtensions.cs b/services/SharedKernel/FilterLists.SharedKernel.Logging/ConfigurationExtensions.cs index dbdec4ff9..76ab48a6e 100644 --- a/services/SharedKernel/FilterLists.SharedKernel.Logging/ConfigurationExtensions.cs +++ b/services/SharedKernel/FilterLists.SharedKernel.Logging/ConfigurationExtensions.cs @@ -1,7 +1,6 @@ using System; using FilterLists.SharedKernel.Logging.Options; using Microsoft.ApplicationInsights.Channel; -using Microsoft.ApplicationInsights.Extensibility; using Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel; using Microsoft.AspNetCore.Builder; using Microsoft.Extensions.Configuration; @@ -15,13 +14,7 @@ public static class ConfigurationExtensions { public static IHostBuilder UseLogging(this IHostBuilder hostBuilder) { - return hostBuilder.UseSerilog((_, services, __) => ConfigurationBuilder.BaseLoggerConfiguration - .WriteTo.Conditional( - ___ => services.GetService().IsProduction(), - c => c.ApplicationInsights( - services.GetRequiredService(), - TelemetryConverter.Traces)) - .WriteTo.Console()); + return hostBuilder.UseSerilog(); } public static void AddSharedKernelLogging(this IServiceCollection services, IConfiguration configuration) diff --git a/services/SharedKernel/FilterLists.SharedKernel.Logging/HostRunner.cs b/services/SharedKernel/FilterLists.SharedKernel.Logging/HostRunner.cs new file mode 100644 index 000000000..7d467b99e --- /dev/null +++ b/services/SharedKernel/FilterLists.SharedKernel.Logging/HostRunner.cs @@ -0,0 +1,51 @@ +using System; +using System.Threading.Tasks; +using Microsoft.ApplicationInsights; +using Microsoft.ApplicationInsights.Extensibility; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Serilog; + +namespace FilterLists.SharedKernel.Logging +{ + public static class HostRunner + { + public static async Task TryRunWithLoggingAsync(this IHost host, Func? runPreHostAsync = default) + { + _ = host ?? throw new ArgumentNullException(nameof(host)); + + Log.Logger = ConfigurationBuilder.BaseLoggerConfiguration + .WriteTo.Conditional( + _ => host.Services.GetService().IsProduction(), + c => c.ApplicationInsights( + host.Services.GetRequiredService(), + TelemetryConverter.Traces)) + .CreateLogger(); + + try + { + // TODO: rm, for debugging + var client = host.Services.GetService(); + Log.Warning("Application Insights Instrumentation Key: {InstrumentationKey}", client.InstrumentationKey); + + if (runPreHostAsync != null) + { + Log.Information("Initializing pre-host"); + await runPreHostAsync(); + } + + Log.Information("Initializing host"); + await host.RunAsync(); + } + catch (Exception ex) + { + Log.Fatal(ex, "Host terminated unexpectedly"); + throw; + } + finally + { + Log.CloseAndFlush(); + } + } + } +}