public static IServiceCollection AddSerilogWithInsights()

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);
            });
        }