1- #if ! NETCORE1_0
1+ using System ;
2+ using System . Reflection ;
3+ #if ! NETCORE1_0
24using Microsoft . Extensions . Logging ;
35#endif
6+ using NLog . Common ;
47
58namespace NLog . Extensions . Logging
69{
@@ -20,7 +23,8 @@ public class NLogLoggerProvider : Microsoft.Extensions.Logging.ILoggerProvider
2023 /// <summary>
2124 /// New provider with default options, see <see cref="Options"/>
2225 /// </summary>
23- public NLogLoggerProvider ( )
26+ public NLogLoggerProvider ( )
27+ : this ( null )
2428 {
2529 }
2630
@@ -31,6 +35,7 @@ public NLogLoggerProvider()
3135 public NLogLoggerProvider ( NLogProviderOptions options )
3236 {
3337 Options = options ;
38+ RegisterHiddenAssembliesForCallSite ( ) ;
3439 }
3540
3641 /// <summary>
@@ -49,6 +54,58 @@ public Microsoft.Extensions.Logging.ILogger CreateLogger(string name)
4954 public void Dispose ( )
5055 {
5156 }
57+
58+ /// <summary>
59+ /// Ignore assemblies for ${callsite}
60+ /// </summary>
61+ private static void RegisterHiddenAssembliesForCallSite ( )
62+ {
63+ InternalLogger . Debug ( "Hide assemblies for callsite" ) ;
64+ LogManager . AddHiddenAssembly ( typeof ( NLogLoggerProvider ) . GetTypeInfo ( ) . Assembly ) ;
65+
66+ #if ! NETCORE1_0
67+ var allAssemblies = AppDomain . CurrentDomain . GetAssemblies ( ) ;
68+ foreach ( var assembly in allAssemblies )
69+ {
70+ if ( assembly . FullName . StartsWith ( "NLog.Extensions.Logging," , StringComparison . OrdinalIgnoreCase )
71+ || assembly . FullName . StartsWith ( "NLog.Web," , StringComparison . OrdinalIgnoreCase )
72+ || assembly . FullName . StartsWith ( "NLog.Web.AspNetCore," , StringComparison . OrdinalIgnoreCase )
73+ || assembly . FullName . StartsWith ( "Microsoft.Extensions.Logging," , StringComparison . OrdinalIgnoreCase )
74+ || assembly . FullName . StartsWith ( "Microsoft.Extensions.Logging.Abstractions," , StringComparison . OrdinalIgnoreCase )
75+ || assembly . FullName . StartsWith ( "Microsoft.Extensions.Logging.Filter," , StringComparison . OrdinalIgnoreCase )
76+ || assembly . FullName . StartsWith ( "Microsoft.Logging," , StringComparison . OrdinalIgnoreCase ) )
77+ {
78+ LogManager . AddHiddenAssembly ( assembly ) ;
79+ }
80+ }
81+ #else
82+ SafeAddHiddenAssembly ( "Microsoft.Logging" ) ;
83+ SafeAddHiddenAssembly ( "Microsoft.Extensions.Logging" ) ;
84+ SafeAddHiddenAssembly ( "Microsoft.Extensions.Logging.Abstractions" ) ;
85+
86+ //try the Filter ext, this one is not mandatory so could fail
87+ SafeAddHiddenAssembly ( "Microsoft.Extensions.Logging.Filter" , false ) ;
88+ #endif
89+ }
90+
91+ #if NETCORE1_0
92+ private static void SafeAddHiddenAssembly ( string assemblyName , bool logOnException = true )
93+ {
94+ try
95+ {
96+ InternalLogger . Trace ( "Hide {0}" , assemblyName ) ;
97+ var assembly = Assembly . Load ( new AssemblyName ( assemblyName ) ) ;
98+ LogManager . AddHiddenAssembly ( assembly ) ;
99+ }
100+ catch ( Exception ex )
101+ {
102+ if ( logOnException )
103+ {
104+ InternalLogger . Debug ( ex , "Hiding assembly {0} failed. This could influence the ${callsite}" , assemblyName ) ;
105+ }
106+ }
107+ }
108+ #endif
52109 }
53110}
54111
0 commit comments