Skip to content

Commit 3f70c2b

Browse files
authored
Added AddNLog-extension-method with custom options and serviceprovider-functor (#595)
1 parent 09d2619 commit 3f70c2b

2 files changed

Lines changed: 26 additions & 5 deletions

File tree

src/NLog.Extensions.Logging/Extensions/ConfigureExtensions.cs

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public static ILoggerFactory AddNLog(this ILoggerFactory factory)
3434
/// Enable NLog as logging provider for Microsoft Extension Logging
3535
/// </summary>
3636
/// <param name="factory"></param>
37-
/// <param name="options">NLog options</param>
37+
/// <param name="options">NLog Logging Provider options</param>
3838
/// <returns>ILoggerFactory for chaining</returns>
3939
#if !NETCORE1_0
4040
[Obsolete("Instead use ILoggingBuilder.AddNLog() or IHostBuilder.UseNLog()")]
@@ -89,7 +89,7 @@ public static ILoggingBuilder AddNLog(this ILoggingBuilder factory, IConfigurati
8989
/// </summary>
9090
/// <param name="factory"></param>
9191
/// <param name="configuration">Configuration</param>
92-
/// <param name="options">NLog options</param>
92+
/// <param name="options">NLog Logging Provider options</param>
9393
/// <returns>ILoggingBuilder for chaining</returns>
9494
public static ILoggingBuilder AddNLog(this ILoggingBuilder factory, IConfiguration configuration, NLogProviderOptions options)
9595
{
@@ -101,7 +101,7 @@ public static ILoggingBuilder AddNLog(this ILoggingBuilder factory, IConfigurati
101101
/// Enable NLog as logging provider for Microsoft Extension Logging
102102
/// </summary>
103103
/// <param name="factory"></param>
104-
/// <param name="options">NLog options</param>
104+
/// <param name="options">NLog Logging Provider options</param>
105105
/// <returns>ILoggingBuilder for chaining</returns>
106106
public static ILoggingBuilder AddNLog(this ILoggingBuilder factory, NLogProviderOptions options)
107107
{
@@ -125,7 +125,7 @@ public static ILoggingBuilder AddNLog(this ILoggingBuilder builder, LoggingConfi
125125
/// </summary>
126126
/// <param name="builder"></param>
127127
/// <param name="configuration">New NLog config.</param>
128-
/// <param name="options">NLog options</param>
128+
/// <param name="options">NLog Logging Provider options</param>
129129
/// <returns>ILoggingBuilder for chaining</returns>
130130
public static ILoggingBuilder AddNLog(this ILoggingBuilder builder, LoggingConfiguration configuration, NLogProviderOptions options)
131131
{
@@ -158,6 +158,27 @@ public static ILoggingBuilder AddNLog(this ILoggingBuilder builder, string confi
158158
return builder;
159159
}
160160

161+
/// <summary>
162+
/// Enable NLog as logging provider for Microsoft Extension Logging
163+
/// </summary>
164+
/// <param name="builder"></param>
165+
/// <param name="options">NLog Logging Provider options</param>
166+
/// <param name="factoryBuilder">Initialize NLog LogFactory with NLog LoggingConfiguration.</param>
167+
/// <returns>ILoggingBuilder for chaining</returns>
168+
public static ILoggingBuilder AddNLog(this ILoggingBuilder builder, NLogProviderOptions options, Func<IServiceProvider, LogFactory> factoryBuilder)
169+
{
170+
AddNLogLoggerProvider(builder, null, options, (serviceProvider, config, options) =>
171+
{
172+
serviceProvider.SetupNLogConfigSettings(config);
173+
174+
// Delay initialization of targets until we have loaded config-settings
175+
var logFactory = factoryBuilder(serviceProvider);
176+
var provider = CreateNLogLoggerProvider(serviceProvider, config, options, logFactory);
177+
return provider;
178+
});
179+
return builder;
180+
}
181+
161182
/// <summary>
162183
/// Enable NLog as logging provider for Microsoft Extension Logging
163184
/// </summary>

src/NLog.Extensions.Logging/Logging/NLogProviderOptions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
namespace NLog.Extensions.Logging
44
{
55
/// <summary>
6-
/// Options for logging to NLog with
6+
/// Configuration options for the NLog Logging Provider with Microsoft Extension Logging
77
/// </summary>
88
public class NLogProviderOptions
99
{

0 commit comments

Comments
 (0)