From ae4991fb270760c472ec1e837186cdeddce2939d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B8=D1=85=D0=B0=D0=B8=D0=BB=20=D0=9F=D0=B8=D0=B4?= =?UTF-8?q?=D0=B6=D0=B0=D0=BA=D0=BE=D0=B2?= Date: Wed, 17 Jan 2018 15:04:18 +0500 Subject: [PATCH] I have changed the registration of the LoggerProvider with using a factory for creating an instance. It was necessary because the DI container ignores a registered singleton with an instance during disposing. --- .../SerilogLoggingBuilderExtensions.cs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/Serilog.Extensions.Logging/SerilogLoggingBuilderExtensions.cs b/src/Serilog.Extensions.Logging/SerilogLoggingBuilderExtensions.cs index 701fa4c..d7a3f5f 100644 --- a/src/Serilog.Extensions.Logging/SerilogLoggingBuilderExtensions.cs +++ b/src/Serilog.Extensions.Logging/SerilogLoggingBuilderExtensions.cs @@ -15,6 +15,7 @@ #if LOGGING_BUILDER using System; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Serilog.Extensions.Logging; @@ -38,7 +39,15 @@ public static ILoggingBuilder AddSerilog(this ILoggingBuilder builder, ILogger l { if (builder == null) throw new ArgumentNullException(nameof(builder)); - builder.AddProvider(new SerilogLoggerProvider(logger, dispose)); + if (dispose) + { + builder.Services.AddSingleton(services => new SerilogLoggerProvider(logger, true)); + } + else + { + builder.AddProvider(new SerilogLoggerProvider(logger)); + } + builder.AddFilter(null, LogLevel.Trace); return builder;