mirror of
https://github.com/collinbarrett/FilterLists.git
synced 2026-03-11 09:04:27 +00:00
feat(logging): ✨ add ApplicationInsights sink
This commit is contained in:
parent
fe84b49c1d
commit
b6278c6b11
6 changed files with 50 additions and 30 deletions
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -30,6 +30,7 @@
|
|||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Serilog.AspNetCore" Version="3.4.0" />
|
||||
<PackageReference Include="Serilog.Sinks.ApplicationInsights" Version="3.1.0" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -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<int> TryRunWithLoggingAsync(Func<Task> runHostAsync)
|
||||
public static async Task<int> TryRunWithLoggingAsync(this IHost host, Func<Task>? 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)
|
||||
|
|
|
|||
Loading…
Reference in a new issue