@@ -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>
0 commit comments