diff --git a/Application/EdFi.Ods.AdminApi/Infrastructure/WebApplicationBuilderExtensions.cs b/Application/EdFi.Ods.AdminApi/Infrastructure/WebApplicationBuilderExtensions.cs index 3c3af9ac0..bebca9953 100644 --- a/Application/EdFi.Ods.AdminApi/Infrastructure/WebApplicationBuilderExtensions.cs +++ b/Application/EdFi.Ods.AdminApi/Infrastructure/WebApplicationBuilderExtensions.cs @@ -26,6 +26,8 @@ using EdFi.Security.DataAccess.Contexts; using FluentValidation; using FluentValidation.AspNetCore; +using log4net; +using log4net.Config; using Microsoft.AspNetCore.Http.Json; using Microsoft.AspNetCore.RateLimiting; using Microsoft.EntityFrameworkCore; @@ -169,10 +171,6 @@ public static void AddServices(this WebApplicationBuilder webApplicationBuilder) }); }); - // Logging - var loggingOptions = config.GetSection("Log4NetCore").Get(); - webApplicationBuilder.Logging.AddLog4Net(loggingOptions); - // Fluent validation webApplicationBuilder .Services.AddValidatorsFromAssembly(assembly) @@ -213,6 +211,30 @@ public static void AddServices(this WebApplicationBuilder webApplicationBuilder) webApplicationBuilder.Services.AddTransient(); } + public static void AddLoggingServices(this WebApplicationBuilder webApplicationBuilder) + { + ConfigurationManager config = webApplicationBuilder.Configuration; + + // Remove all default logging providers (Console, Debug, etc.) + webApplicationBuilder.Logging.ClearProviders(); + + // Initialize log4net early so we can use it in Program.cs + var log4netConfigFileName = webApplicationBuilder.Configuration.GetValue("Log4NetCore:Log4NetConfigFileName"); + if (!string.IsNullOrEmpty(log4netConfigFileName)) + { + var log4netConfigPath = Path.Combine(AppContext.BaseDirectory, log4netConfigFileName); + if (File.Exists(log4netConfigPath)) + { + var log4netConfig = new FileInfo(log4netConfigPath); + XmlConfigurator.Configure(LogManager.GetRepository(), log4netConfig); + } + } + + // Important to display messages based on the Logging section in appsettings.json + var loggingOptions = config.GetSection("Log4NetCore").Get(); + webApplicationBuilder.Logging.AddLog4Net(loggingOptions); + } + private static void EnableMultiTenancySupport(this WebApplicationBuilder webApplicationBuilder) { webApplicationBuilder.Services.AddTransient< diff --git a/Application/EdFi.Ods.AdminApi/Program.cs b/Application/EdFi.Ods.AdminApi/Program.cs index 5d544d3b8..a54c5d20a 100644 --- a/Application/EdFi.Ods.AdminApi/Program.cs +++ b/Application/EdFi.Ods.AdminApi/Program.cs @@ -17,16 +17,7 @@ var builder = WebApplication.CreateBuilder(args); // Initialize log4net early so we can use it in Program.cs -var log4netConfigFileName = builder.Configuration.GetValue("Log4NetCore:Log4NetConfigFileName"); -if (!string.IsNullOrEmpty(log4netConfigFileName)) -{ - var log4netConfigPath = Path.Combine(AppContext.BaseDirectory, log4netConfigFileName); - if (File.Exists(log4netConfigPath)) - { - var log4netConfig = new FileInfo(log4netConfigPath); - XmlConfigurator.Configure(LogManager.GetRepository(), log4netConfig); - } -} +builder.AddLoggingServices(); // logging var _logger = LogManager.GetLogger("Program");