@@ -15,11 +15,17 @@ namespace NLog.Extensions.Logging
15
15
#endif
16
16
public class NLogLoggerProvider : Microsoft . Extensions . Logging . ILoggerProvider
17
17
{
18
+ private NLogBeginScopeParser _beginScopeParser ;
19
+
18
20
/// <summary>
19
21
/// NLog options
20
22
/// </summary>
21
23
public NLogProviderOptions Options { get ; set ; }
22
- private NLogBeginScopeParser _beginScopeParser ;
24
+
25
+ /// <summary>
26
+ /// NLog Factory
27
+ /// </summary>
28
+ public LogFactory LogFactory { get ; }
23
29
24
30
/// <summary>
25
31
/// New provider with default options, see <see cref="Options"/>
@@ -34,7 +40,18 @@ public NLogLoggerProvider()
34
40
/// </summary>
35
41
/// <param name="options"></param>
36
42
public NLogLoggerProvider ( NLogProviderOptions options )
43
+ : this ( options , null )
44
+ {
45
+ }
46
+
47
+ /// <summary>
48
+ /// New provider with options
49
+ /// </summary>
50
+ /// <param name="options"></param>
51
+ /// <param name="logFactory">Optional isolated NLog LogFactory</param>
52
+ public NLogLoggerProvider ( NLogProviderOptions options , LogFactory logFactory )
37
53
{
54
+ LogFactory = logFactory ?? LogManager . LogFactory ;
38
55
Options = options ?? NLogProviderOptions . Default ;
39
56
_beginScopeParser = new NLogBeginScopeParser ( options ) ;
40
57
RegisterHiddenAssembliesForCallSite ( ) ;
@@ -50,7 +67,7 @@ public Microsoft.Extensions.Logging.ILogger CreateLogger(string name)
50
67
var beginScopeParser = ( ( Options ? . CaptureMessageProperties ?? true ) && ( Options ? . IncludeScopes ?? true ) )
51
68
? ( _beginScopeParser ?? System . Threading . Interlocked . CompareExchange ( ref _beginScopeParser , new NLogBeginScopeParser ( Options ) , null ) )
52
69
: null ;
53
- return new NLogLogger ( LogManager . GetLogger ( name ) , Options , beginScopeParser ) ;
70
+ return new NLogLogger ( LogFactory . GetLogger ( name ) , Options , beginScopeParser ) ;
54
71
}
55
72
56
73
/// <summary>
@@ -70,7 +87,7 @@ protected virtual void Dispose(bool disposing)
70
87
{
71
88
if ( disposing )
72
89
{
73
- LogManager . Flush ( ) ;
90
+ LogFactory . Flush ( ) ;
74
91
}
75
92
}
76
93
0 commit comments