in src/Shared/Configuration.AspNetCore/Extensions/LoggingExtensions.cs [30:59]
public static IServiceCollection AddSerilogWithInsights<T>(this IServiceCollection collection, IConfiguration configuration)
{
collection.AddLogging(builder => builder.ClearProviders());
// Npsql is not compatible with DiagnosticSource:
// https://github.com/npgsql/npgsql/issues/1893
// Implicitly app insight will build there own Configuration with only default ASP.NET core settings files ...
collection.AddApplicationInsightsTelemetry(configuration);
return collection.SetupSerilog((provider, loggerConfiguration) =>
{
var telemetryConfig = ServiceProviderServiceExtensions.GetRequiredService<TelemetryConfiguration>(provider);
LoggerConfigurationApplicationInsightsExtensions.ApplicationInsights(loggerConfiguration
.MinimumLevel.Information()
.MinimumLevel.Override("Microsoft", LogEventLevel.Warning)
.MinimumLevel.Override("System", LogEventLevel.Warning)
.MinimumLevel.Override("Microsoft.AspNetCore.Authentication", LogEventLevel.Information)
.Enrich.FromLogContext()
.Enrich.WithProperty("ApplicationName", typeof(T).Assembly.GetName().Name)
.WriteTo,
telemetryConfig,
TelemetryConverter.Traces,
LogEventLevel.Information)
.WriteTo.Console(
outputTemplate:
"[{Timestamp:HH:mm:ss} {Level}] {SourceContext}{NewLine}{Message:lj}{NewLine}{Exception}{NewLine}",
theme: AnsiConsoleTheme.Literate);
});
}