Skip to content

Commit 12b0bb3

Browse files
authored
Merge pull request #53 from cbersch/pass-registered-logger-to-diagnosticcontext
Pass registered logger to DiagnosticContext
2 parents b393f43 + 495b1a2 commit 12b0bb3

File tree

1 file changed

+17
-17
lines changed

1 file changed

+17
-17
lines changed

src/Serilog.Extensions.Hosting/SerilogHostBuilderExtensions.cs

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,13 @@ public static IHostBuilder UseSerilog(
8080
collection.AddSingleton<ILoggerFactory>(services => new SerilogLoggerFactory(logger, dispose));
8181
}
8282

83-
ConfigureServices(collection, logger);
83+
if (logger != null)
84+
{
85+
// This won't (and shouldn't) take ownership of the logger.
86+
collection.AddSingleton(logger);
87+
}
88+
bool useRegisteredLogger = logger != null;
89+
ConfigureDiagnosticContext(collection, useRegisteredLogger);
8490
});
8591

8692
return builder;
@@ -221,32 +227,26 @@ public static IHostBuilder UseSerilog(
221227

222228
return factory;
223229
});
224-
225-
// Null is passed here because we've already (lazily) registered `ILogger`
226-
ConfigureServices(collection, null);
230+
231+
ConfigureDiagnosticContext(collection, preserveStaticLogger);
227232
});
228233

229234
return builder;
230235
}
231236

232-
static void ConfigureServices(IServiceCollection collection, ILogger logger)
237+
static void ConfigureDiagnosticContext(IServiceCollection collection, bool useRegisteredLogger)
233238
{
234239
if (collection == null) throw new ArgumentNullException(nameof(collection));
235240

236-
if (logger != null)
237-
{
238-
// This won't (and shouldn't) take ownership of the logger.
239-
collection.AddSingleton(logger);
240-
}
241-
242-
// Registered to provide two services...
243-
var diagnosticContext = new DiagnosticContext(logger);
244-
241+
// Registered to provide two services...
245242
// Consumed by e.g. middleware
246-
collection.AddSingleton(diagnosticContext);
247-
243+
collection.AddSingleton(services =>
244+
{
245+
ILogger logger = useRegisteredLogger ? services.GetRequiredService<RegisteredLogger>().Logger : null;
246+
return new DiagnosticContext(logger);
247+
});
248248
// Consumed by user code
249-
collection.AddSingleton<IDiagnosticContext>(diagnosticContext);
249+
collection.AddSingleton<IDiagnosticContext>(services => services.GetRequiredService<DiagnosticContext>());
250250
}
251251
}
252252
}

0 commit comments

Comments
 (0)