fix(logging): 🐛 try fix AppInisghts using inline initialization

This commit is contained in:
Collin M. Barrett 2020-09-24 19:39:54 -05:00
parent 75ce1398e1
commit e31dc775a7
4 changed files with 13 additions and 58 deletions

View file

@ -1,8 +1,7 @@
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
{
@ -11,7 +10,7 @@ public static class Program
public static async Task Main(string[] args)
{
var host = CreateHostBuilder(args).Build();
await host.TryRunWithLoggingAsync();
await host.RunAsync();
}
public static IHostBuilder CreateHostBuilder(string[] args)

View file

@ -1,9 +1,8 @@
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
{
@ -12,7 +11,8 @@ public static class Program
public static async Task Main(string[] args)
{
var host = CreateHostBuilder(args).Build();
await host.TryRunWithLoggingAsync(async () => await host.MigrateAsync());
await host.MigrateAsync();
await host.RunAsync();
}
public static IHostBuilder CreateHostBuilder(string[] args)

View file

@ -1,6 +1,7 @@
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;
@ -14,7 +15,13 @@ public static class ConfigurationExtensions
{
public static IHostBuilder UseLogging(this IHostBuilder hostBuilder)
{
return hostBuilder.UseSerilog();
return hostBuilder.UseSerilog((_, services, __) => ConfigurationBuilder.BaseLoggerConfiguration
.WriteTo.Conditional(
___ => services.GetService<IHostEnvironment>().IsProduction(),
c => c.ApplicationInsights(
services.GetRequiredService<TelemetryConfiguration>(),
TelemetryConverter.Traces))
.WriteTo.Console());
}
public static void AddSharedKernelLogging(this IServiceCollection services, IConfiguration configuration)

View file

@ -1,51 +0,0 @@
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<Task>? runPreHostAsync = default)
{
_ = host ?? throw new ArgumentNullException(nameof(host));
Log.Logger = ConfigurationBuilder.BaseLoggerConfiguration
.WriteTo.Conditional(
_ => host.Services.GetService<IHostEnvironment>().IsProduction(),
c => c.ApplicationInsights(
host.Services.GetRequiredService<TelemetryConfiguration>(),
TelemetryConverter.Traces))
.CreateLogger();
try
{
// TODO: rm, for debugging
var client = host.Services.GetService<TelemetryClient>();
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();
}
}
}
}