diff --git a/services/archival/src/FilterLists.Archival.Api/Program.cs b/services/archival/src/FilterLists.Archival.Api/Program.cs
index d9b787ee9..1d014af62 100644
--- a/services/archival/src/FilterLists.Archival.Api/Program.cs
+++ b/services/archival/src/FilterLists.Archival.Api/Program.cs
@@ -10,11 +10,8 @@ public static class Program
{
public static async Task Main(string[] args)
{
- await TryRunWithLoggingAsync(async () =>
- {
- var host = CreateHostBuilder(args).Build();
- await host.RunAsync();
- });
+ var host = CreateHostBuilder(args).Build();
+ await host.TryRunWithLoggingAsync();
}
public static IHostBuilder CreateHostBuilder(string[] args)
diff --git a/services/directory/src/FilterLists.Directory.Api/Program.cs b/services/directory/src/FilterLists.Directory.Api/Program.cs
index 48360f51e..f48564678 100644
--- a/services/directory/src/FilterLists.Directory.Api/Program.cs
+++ b/services/directory/src/FilterLists.Directory.Api/Program.cs
@@ -11,12 +11,8 @@ public static class Program
{
public static async Task Main(string[] args)
{
- await TryRunWithLoggingAsync(async () =>
- {
- var host = CreateHostBuilder(args).Build();
- await host.MigrateAsync();
- await host.RunAsync();
- });
+ var host = CreateHostBuilder(args).Build();
+ await host.TryRunWithLoggingAsync(async () => await host.MigrateAsync());
}
public static IHostBuilder CreateHostBuilder(string[] args)
diff --git a/services/sharedKernel/src/FilterLists.SharedKernel.Logging/Configuration.cs b/services/sharedKernel/src/FilterLists.SharedKernel.Logging/Configuration.cs
deleted file mode 100644
index 304d884c5..000000000
--- a/services/sharedKernel/src/FilterLists.SharedKernel.Logging/Configuration.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-using Serilog;
-using Serilog.Events;
-
-namespace FilterLists.SharedKernel.Logging
-{
- internal static class Configuration
- {
- public static LoggerConfiguration LoggerConfiguration = new LoggerConfiguration()
- .MinimumLevel.Debug()
- .MinimumLevel.Override("Microsoft", LogEventLevel.Information)
- .MinimumLevel.Override("Microsoft.AspNetCore", LogEventLevel.Warning)
- .Enrich.FromLogContext()
- .WriteTo.Console();
- }
-}
\ No newline at end of file
diff --git a/services/sharedKernel/src/FilterLists.SharedKernel.Logging/ConfigurationBuilder.cs b/services/sharedKernel/src/FilterLists.SharedKernel.Logging/ConfigurationBuilder.cs
new file mode 100644
index 000000000..b7118b47a
--- /dev/null
+++ b/services/sharedKernel/src/FilterLists.SharedKernel.Logging/ConfigurationBuilder.cs
@@ -0,0 +1,28 @@
+using Microsoft.ApplicationInsights;
+using Microsoft.ApplicationInsights.Extensibility;
+using Serilog;
+using Serilog.Events;
+
+namespace FilterLists.SharedKernel.Logging
+{
+ internal static class ConfigurationBuilder
+ {
+ public static readonly LoggerConfiguration BaseLoggerConfiguration =
+ new LoggerConfiguration()
+ .MinimumLevel.Debug()
+ .MinimumLevel.Override("Microsoft", LogEventLevel.Information)
+ .MinimumLevel.Override("Microsoft.AspNetCore", LogEventLevel.Warning)
+ .Enrich.FromLogContext()
+ .WriteTo.Console();
+
+ public static LoggerConfiguration WriteToApplicationInsights(
+ this LoggerConfiguration loggerConfiguration,
+ TelemetryClient? telemetryClient = default)
+ {
+ var telemetryConverter = TelemetryConverter.Traces;
+ return telemetryClient != null
+ ? loggerConfiguration.WriteTo.ApplicationInsights(telemetryClient, telemetryConverter)
+ : loggerConfiguration.WriteTo.ApplicationInsights(TelemetryConfiguration.Active, telemetryConverter);
+ }
+ }
+}
\ No newline at end of file
diff --git a/services/sharedKernel/src/FilterLists.SharedKernel.Logging/FilterLists.SharedKernel.Logging.csproj b/services/sharedKernel/src/FilterLists.SharedKernel.Logging/FilterLists.SharedKernel.Logging.csproj
index afaf394b1..287a8f0b0 100644
--- a/services/sharedKernel/src/FilterLists.SharedKernel.Logging/FilterLists.SharedKernel.Logging.csproj
+++ b/services/sharedKernel/src/FilterLists.SharedKernel.Logging/FilterLists.SharedKernel.Logging.csproj
@@ -30,6 +30,7 @@
runtime; build; native; contentfiles; analyzers; buildtransitive
+
diff --git a/services/sharedKernel/src/FilterLists.SharedKernel.Logging/HostRunner.cs b/services/sharedKernel/src/FilterLists.SharedKernel.Logging/HostRunner.cs
index f57632e45..d50e5f60c 100644
--- a/services/sharedKernel/src/FilterLists.SharedKernel.Logging/HostRunner.cs
+++ b/services/sharedKernel/src/FilterLists.SharedKernel.Logging/HostRunner.cs
@@ -1,19 +1,32 @@
using System;
using System.Threading.Tasks;
+using Microsoft.ApplicationInsights;
+using Microsoft.Extensions.Hosting;
using Serilog;
namespace FilterLists.SharedKernel.Logging
{
public static class HostRunner
{
- public static async Task TryRunWithLoggingAsync(Func runHostAsync)
+ public static async Task TryRunWithLoggingAsync(this IHost host, Func? runPreHostAsync = default)
{
- Log.Logger = Configuration.LoggerConfiguration.CreateLogger();
+ _ = host ?? throw new ArgumentNullException(nameof(host));
+
+ var telemetryClient = (TelemetryClient)host.Services.GetService(typeof(TelemetryClient));
+ Log.Logger = ConfigurationBuilder.BaseLoggerConfiguration
+ .WriteToApplicationInsights(telemetryClient)
+ .CreateLogger();
try
{
- Log.Information("Starting host");
- await runHostAsync();
+ if (runPreHostAsync != null)
+ {
+ Log.Information("Initializing pre-host");
+ await runPreHostAsync();
+ }
+
+ Log.Information("Initializing host");
+ await host.RunAsync();
return 0;
}
catch (Exception ex)