From 5da473dc626ea904389f0d355d1984dc7a6edce2 Mon Sep 17 00:00:00 2001 From: "Collin M. Barrett" Date: Fri, 12 Jul 2019 09:46:21 -0500 Subject: [PATCH] use serilog AppInsights sink --- .../FilterLists.Agent.csproj | 2 +- .../ServiceCollectionExtensions.cs | 19 ++++++++++++++----- src/FilterLists.Agent/Program.cs | 12 ++++++++++++ 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/src/FilterLists.Agent/FilterLists.Agent.csproj b/src/FilterLists.Agent/FilterLists.Agent.csproj index aac1ca74c..78defd2f4 100644 --- a/src/FilterLists.Agent/FilterLists.Agent.csproj +++ b/src/FilterLists.Agent/FilterLists.Agent.csproj @@ -43,13 +43,13 @@ - + diff --git a/src/FilterLists.Agent/Infrastructure/DependencyInjection/ServiceCollectionExtensions.cs b/src/FilterLists.Agent/Infrastructure/DependencyInjection/ServiceCollectionExtensions.cs index 4871b1958..7f18b4827 100644 --- a/src/FilterLists.Agent/Infrastructure/DependencyInjection/ServiceCollectionExtensions.cs +++ b/src/FilterLists.Agent/Infrastructure/DependencyInjection/ServiceCollectionExtensions.cs @@ -9,9 +9,9 @@ using FilterLists.Agent.Infrastructure.GitHub; using LibGit2Sharp; using MediatR; +using Microsoft.ApplicationInsights; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Polly; using Serilog; @@ -59,12 +59,21 @@ private static void ConfigureCustom(this IServiceCollection services, private static void AddLoggingCustom(this IServiceCollection services) { + services.AddSingleton(b => + { + var applicationInsightsSettings = b.GetService>().Value; + return new TelemetryClient + { + InstrumentationKey = applicationInsightsSettings.InstrumentationKey + }; + }); services.AddLogging(b => { - b.AddSerilog(new LoggerConfiguration().WriteTo.Console().CreateLogger()); - var applicationInsightsSettings = b.Services.BuildServiceProvider() - .GetService>().Value; - b.AddApplicationInsights(applicationInsightsSettings.InstrumentationKey); + var telemetryClient = b.Services.BuildServiceProvider().GetService(); + b.AddSerilog(new LoggerConfiguration() + .WriteTo.Console() + .WriteTo.ApplicationInsights(telemetryClient, TelemetryConverter.Traces) + .CreateLogger()); }); } diff --git a/src/FilterLists.Agent/Program.cs b/src/FilterLists.Agent/Program.cs index 96b203f92..fc28c702b 100644 --- a/src/FilterLists.Agent/Program.cs +++ b/src/FilterLists.Agent/Program.cs @@ -1,10 +1,12 @@ using System; +using System.Threading; using System.Threading.Tasks; using CommandLine; using FilterLists.Agent.Features.Lists; using FilterLists.Agent.Features.Urls; using FilterLists.Agent.Infrastructure.DependencyInjection; using MediatR; +using Microsoft.ApplicationInsights; using Microsoft.Extensions.DependencyInjection; namespace FilterLists.Agent @@ -18,6 +20,7 @@ public static async Task Main(string[] args) BuildServiceProvider(); var parser = _serviceProvider.GetService(); var mediator = _serviceProvider.GetService(); + await parser.ParseArguments(args).MapResult(async o => { if (o.ArchiveLists) @@ -27,6 +30,8 @@ await parser.ParseArguments(args).MapResult(async o => }, e => Task.FromResult(0) ); + + FlushApplicationInsights(); } private static void BuildServiceProvider() @@ -35,5 +40,12 @@ private static void BuildServiceProvider() serviceCollection.RegisterAgentServices(); _serviceProvider = serviceCollection.BuildServiceProvider(); } + + private static void FlushApplicationInsights() + { + var telemetryClient = _serviceProvider.GetService(); + telemetryClient.Flush(); + Thread.Sleep(5000); + } } } \ No newline at end of file