Skip to content

Commit 494b9f7

Browse files
committed
Use application insights for logging
1 parent fc2d84e commit 494b9f7

File tree

6 files changed

+632
-37
lines changed

6 files changed

+632
-37
lines changed

App/Api/Api.csproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,14 @@
66
<PackageReference Include="Azure.Identity" />
77
<PackageReference Include="Asp.Versioning.Mvc.ApiExplorer" />
88
<PackageReference Include="DotNetEnv" />
9+
<PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" />
910
<PackageReference Include="Microsoft.AspNetCore.OpenApi" />
11+
<PackageReference Include="Microsoft.Extensions.Logging.ApplicationInsights" />
1012
<PackageReference Include="Scalar.AspNetCore" />
1113
<PackageReference Include="Serilog" />
1214
<PackageReference Include="Serilog.Extensions.Hosting" />
1315
<PackageReference Include="Serilog.Settings.Configuration" />
16+
<PackageReference Include="Serilog.Sinks.ApplicationInsights" />
1417
<PackageReference Include="Serilog.Sinks.Console" />
1518
<PackageReference Include="Swashbuckle.AspNetCore.SwaggerUI" />
1619
</ItemGroup>

App/Api/Program.cs

Lines changed: 33 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -15,26 +15,46 @@
1515
Log.Logger = new LoggerConfiguration()
1616
.ReadFrom.Configuration(config)
1717
.WriteTo.Console(outputTemplate: logFormat, formatProvider: CultureInfo.InvariantCulture)
18-
.CreateLogger();
18+
.CreateBootstrapLogger();
1919

20-
var builder = WebApplication.CreateBuilder(args);
20+
try
21+
{
22+
Log.Information("Starting up the application");
2123

22-
var keyVaultName = Environment.GetEnvironmentVariable("KEY_VAULT_NAME");
24+
var builder = WebApplication.CreateBuilder(args);
2325

24-
if (!string.IsNullOrEmpty(keyVaultName))
25-
{
26-
var keyVaultUri = new Uri($"https://{keyVaultName}.vault.azure.net/");
27-
builder.Configuration.AddAzureKeyVault(keyVaultUri, new DefaultAzureCredential());
28-
}
26+
if (builder.Environment.IsProduction())
27+
{
28+
var keyVaultName = Environment.GetEnvironmentVariable("KEY_VAULT_NAME");
29+
var keyVaultUri = new Uri($"https://{keyVaultName}.vault.azure.net/");
30+
builder.Configuration.AddAzureKeyVault(keyVaultUri, new DefaultAzureCredential());
2931

30-
builder.Services.ConfigureServices();
32+
Log.Logger = new LoggerConfiguration()
33+
.ReadFrom.Configuration(config)
34+
.WriteTo.Console(outputTemplate: logFormat, formatProvider: CultureInfo.InvariantCulture)
35+
.WriteTo.ApplicationInsights(TelemetryConverter.Traces)
36+
.CreateLogger();
37+
}
3138

32-
var app = builder.Build();
39+
builder.Services.ConfigureServices();
3340

34-
app.ConfigureEndpoints();
41+
var app = builder.Build();
3542

36-
app.ConfigureMiddleware(app.Environment);
43+
app.ConfigureEndpoints();
3744

38-
await app.RunAsync();
45+
app.ConfigureMiddleware(app.Environment);
46+
47+
await app.RunAsync();
48+
}
49+
catch (Exception ex)
50+
{
51+
const string message = "Application terminated unexpectedly";
52+
Log.Fatal(ex, message);
53+
throw new InvalidOperationException(message, ex);
54+
}
55+
finally
56+
{
57+
await Log.CloseAndFlushAsync();
58+
}
3959

4060
public partial class Program { } // Reference for tests

App/Api/Setup/ApiServices.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ internal static class ApiServices
1414
{
1515
public static void ConfigureServices(this IServiceCollection services)
1616
{
17+
services.AddApplicationInsightsTelemetry();
18+
1719
services.AddSerilog();
1820

1921
services.AddEndpointsApiExplorer();

0 commit comments

Comments
 (0)