Skip to content

Commit b12f1a1

Browse files
Merge pull request #210 from snakefoot/master
Automatic loading of hidden assemblies for callsite logic in NetCore2
2 parents aad213b + b416d33 commit b12f1a1

2 files changed

Lines changed: 61 additions & 43 deletions

File tree

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

Lines changed: 2 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ public static ILoggerFactory AddNLog(this ILoggerFactory factory)
2929
/// <returns>ILoggerFactory for chaining</returns>
3030
public static ILoggerFactory AddNLog(this ILoggerFactory factory, NLogProviderOptions options)
3131
{
32-
ConfigureHiddenAssemblies();
3332
using (var provider = new NLogLoggerProvider(options))
3433
{
3534
factory.AddProvider(provider);
@@ -64,44 +63,6 @@ public static ILoggingBuilder AddNLog(this ILoggingBuilder factory, NLogProvider
6463
}
6564
#endif
6665

67-
/// <summary>
68-
/// Ignore assemblies for ${callsite}
69-
/// </summary>
70-
private static void ConfigureHiddenAssemblies()
71-
{
72-
#if NETCORE1_0 && !NET451
73-
InternalLogger.Trace("Hide assemblies for callsite");
74-
75-
SafeAddHiddenAssembly("Microsoft.Logging");
76-
77-
SafeAddHiddenAssembly("Microsoft.Extensions.Logging");
78-
SafeAddHiddenAssembly("Microsoft.Extensions.Logging.Abstractions");
79-
SafeAddHiddenAssembly("NLog.Extensions.Logging");
80-
81-
//try the Filter ext, this one is not mandatory so could fail
82-
SafeAddHiddenAssembly("Microsoft.Extensions.Logging.Filter", false);
83-
#endif
84-
}
85-
86-
#if NETCORE1_0 && !NET451
87-
private static void SafeAddHiddenAssembly(string assemblyName, bool logOnException = true)
88-
{
89-
try
90-
{
91-
InternalLogger.Trace("Hide {0}", assemblyName);
92-
var assembly = Assembly.Load(new AssemblyName(assemblyName));
93-
LogManager.AddHiddenAssembly(assembly);
94-
}
95-
catch (Exception ex)
96-
{
97-
if (logOnException)
98-
{
99-
InternalLogger.Debug(ex, "Hiding assembly {0} failed. This could influence the ${callsite}", assemblyName);
100-
}
101-
}
102-
}
103-
#endif
104-
10566
/// <summary>
10667
/// Apply NLog configuration from XML config.
10768
/// </summary>
@@ -111,7 +72,7 @@ private static void SafeAddHiddenAssembly(string assemblyName, bool logOnExcepti
11172
[Obsolete("Instead use NLog.LogManager.LoadConfiguration()")]
11273
public static LoggingConfiguration ConfigureNLog(this ILoggerFactory loggerFactory, string configFileRelativePath)
11374
{
114-
ConfigureHiddenAssemblies();
75+
LogManager.AddHiddenAssembly(typeof(NLogLoggerProvider).GetTypeInfo().Assembly);
11576
return LogManager.LoadConfiguration(configFileRelativePath).Configuration;
11677
}
11778

@@ -124,7 +85,7 @@ public static LoggingConfiguration ConfigureNLog(this ILoggerFactory loggerFacto
12485
[Obsolete("Instead assign property NLog.LogManager.Configuration")]
12586
public static LoggingConfiguration ConfigureNLog(this ILoggerFactory loggerFactory, LoggingConfiguration config)
12687
{
127-
ConfigureHiddenAssemblies();
88+
LogManager.AddHiddenAssembly(typeof(NLogLoggerProvider).GetTypeInfo().Assembly);
12889
LogManager.Configuration = config;
12990
return config;
13091
}

src/NLog.Extensions.Logging/Logging/NLogLoggerProvider.cs

Lines changed: 59 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
1-
#if !NETCORE1_0
1+
using System;
2+
using System.Reflection;
3+
#if !NETCORE1_0
24
using Microsoft.Extensions.Logging;
35
#endif
6+
using NLog.Common;
47

58
namespace 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

Comments
 (0)