From c8788799962c556966c9ea81a34673ffbed5f1b9 Mon Sep 17 00:00:00 2001 From: Rolf Kristensen Date: Sun, 12 Jun 2022 19:54:24 +0200 Subject: [PATCH] Added AddNLog-extension-method with custom options and serviceprovider-functor --- .../Extensions/ConfigureExtensions.cs | 29 ++++++++++++++++--- .../Logging/NLogProviderOptions.cs | 2 +- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/src/NLog.Extensions.Logging/Extensions/ConfigureExtensions.cs b/src/NLog.Extensions.Logging/Extensions/ConfigureExtensions.cs index 4679d06f..27a37150 100644 --- a/src/NLog.Extensions.Logging/Extensions/ConfigureExtensions.cs +++ b/src/NLog.Extensions.Logging/Extensions/ConfigureExtensions.cs @@ -34,7 +34,7 @@ public static ILoggerFactory AddNLog(this ILoggerFactory factory) /// Enable NLog as logging provider for Microsoft Extension Logging /// /// - /// NLog options + /// NLog Logging Provider options /// ILoggerFactory for chaining #if !NETCORE1_0 [Obsolete("Instead use ILoggingBuilder.AddNLog() or IHostBuilder.UseNLog()")] @@ -89,7 +89,7 @@ public static ILoggingBuilder AddNLog(this ILoggingBuilder factory, IConfigurati /// /// /// Configuration - /// NLog options + /// NLog Logging Provider options /// ILoggingBuilder for chaining public static ILoggingBuilder AddNLog(this ILoggingBuilder factory, IConfiguration configuration, NLogProviderOptions options) { @@ -101,7 +101,7 @@ public static ILoggingBuilder AddNLog(this ILoggingBuilder factory, IConfigurati /// Enable NLog as logging provider for Microsoft Extension Logging /// /// - /// NLog options + /// NLog Logging Provider options /// ILoggingBuilder for chaining public static ILoggingBuilder AddNLog(this ILoggingBuilder factory, NLogProviderOptions options) { @@ -125,7 +125,7 @@ public static ILoggingBuilder AddNLog(this ILoggingBuilder builder, LoggingConfi /// /// /// New NLog config. - /// NLog options + /// NLog Logging Provider options /// ILoggingBuilder for chaining public static ILoggingBuilder AddNLog(this ILoggingBuilder builder, LoggingConfiguration configuration, NLogProviderOptions options) { @@ -158,6 +158,27 @@ public static ILoggingBuilder AddNLog(this ILoggingBuilder builder, string confi return builder; } + /// + /// Enable NLog as logging provider for Microsoft Extension Logging + /// + /// + /// NLog Logging Provider options + /// Initialize NLog LogFactory with NLog LoggingConfiguration. + /// ILoggingBuilder for chaining + public static ILoggingBuilder AddNLog(this ILoggingBuilder builder, NLogProviderOptions options, Func factoryBuilder) + { + AddNLogLoggerProvider(builder, null, options, (serviceProvider, config, options) => + { + serviceProvider.SetupNLogConfigSettings(config); + + // Delay initialization of targets until we have loaded config-settings + var logFactory = factoryBuilder(serviceProvider); + var provider = CreateNLogLoggerProvider(serviceProvider, config, options, logFactory); + return provider; + }); + return builder; + } + /// /// Enable NLog as logging provider for Microsoft Extension Logging /// diff --git a/src/NLog.Extensions.Logging/Logging/NLogProviderOptions.cs b/src/NLog.Extensions.Logging/Logging/NLogProviderOptions.cs index d2069ddd..704677e3 100644 --- a/src/NLog.Extensions.Logging/Logging/NLogProviderOptions.cs +++ b/src/NLog.Extensions.Logging/Logging/NLogProviderOptions.cs @@ -3,7 +3,7 @@ namespace NLog.Extensions.Logging { /// - /// Options for logging to NLog with + /// Configuration options for the NLog Logging Provider with Microsoft Extension Logging /// public class NLogProviderOptions {