Skip to content

Commit 6443d40

Browse files
authored
[ADMINAPI-1322] Double logging in the RequestLoggingMiddleware (#376)
1 parent c21eaf9 commit 6443d40

File tree

2 files changed

+27
-14
lines changed

2 files changed

+27
-14
lines changed

Application/EdFi.Ods.AdminApi/Infrastructure/WebApplicationBuilderExtensions.cs

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626
using EdFi.Security.DataAccess.Contexts;
2727
using FluentValidation;
2828
using FluentValidation.AspNetCore;
29+
using log4net;
30+
using log4net.Config;
2931
using Microsoft.AspNetCore.Http.Json;
3032
using Microsoft.AspNetCore.RateLimiting;
3133
using Microsoft.EntityFrameworkCore;
@@ -169,10 +171,6 @@ public static void AddServices(this WebApplicationBuilder webApplicationBuilder)
169171
});
170172
});
171173

172-
// Logging
173-
var loggingOptions = config.GetSection("Log4NetCore").Get<Log4NetProviderOptions>();
174-
webApplicationBuilder.Logging.AddLog4Net(loggingOptions);
175-
176174
// Fluent validation
177175
webApplicationBuilder
178176
.Services.AddValidatorsFromAssembly(assembly)
@@ -213,6 +211,30 @@ public static void AddServices(this WebApplicationBuilder webApplicationBuilder)
213211
webApplicationBuilder.Services.AddTransient<ITenantsService, TenantService>();
214212
}
215213

214+
public static void AddLoggingServices(this WebApplicationBuilder webApplicationBuilder)
215+
{
216+
ConfigurationManager config = webApplicationBuilder.Configuration;
217+
218+
// Remove all default logging providers (Console, Debug, etc.)
219+
webApplicationBuilder.Logging.ClearProviders();
220+
221+
// Initialize log4net early so we can use it in Program.cs
222+
var log4netConfigFileName = webApplicationBuilder.Configuration.GetValue<string>("Log4NetCore:Log4NetConfigFileName");
223+
if (!string.IsNullOrEmpty(log4netConfigFileName))
224+
{
225+
var log4netConfigPath = Path.Combine(AppContext.BaseDirectory, log4netConfigFileName);
226+
if (File.Exists(log4netConfigPath))
227+
{
228+
var log4netConfig = new FileInfo(log4netConfigPath);
229+
XmlConfigurator.Configure(LogManager.GetRepository(), log4netConfig);
230+
}
231+
}
232+
233+
// Important to display messages based on the Logging section in appsettings.json
234+
var loggingOptions = config.GetSection("Log4NetCore").Get<Log4NetProviderOptions>();
235+
webApplicationBuilder.Logging.AddLog4Net(loggingOptions);
236+
}
237+
216238
private static void EnableMultiTenancySupport(this WebApplicationBuilder webApplicationBuilder)
217239
{
218240
webApplicationBuilder.Services.AddTransient<

Application/EdFi.Ods.AdminApi/Program.cs

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,7 @@
1717
var builder = WebApplication.CreateBuilder(args);
1818

1919
// Initialize log4net early so we can use it in Program.cs
20-
var log4netConfigFileName = builder.Configuration.GetValue<string>("Log4NetCore:Log4NetConfigFileName");
21-
if (!string.IsNullOrEmpty(log4netConfigFileName))
22-
{
23-
var log4netConfigPath = Path.Combine(AppContext.BaseDirectory, log4netConfigFileName);
24-
if (File.Exists(log4netConfigPath))
25-
{
26-
var log4netConfig = new FileInfo(log4netConfigPath);
27-
XmlConfigurator.Configure(LogManager.GetRepository(), log4netConfig);
28-
}
29-
}
20+
builder.AddLoggingServices();
3021

3122
// logging
3223
var _logger = LogManager.GetLogger("Program");

0 commit comments

Comments
 (0)