21
21
22
22
namespace Serilog
23
23
{
24
+ /// <summary>
25
+ /// Defines the interpretation of a null DependencyContext configuration parameter.
26
+ /// </summary>
27
+ public enum ConfigurationAssemblySource
28
+ {
29
+ /// <summary>
30
+ /// Try to scan the assemblies already in memory. This is the default. If GetEntryAssembly is null, fallback to DLL scanning.
31
+ /// </summary>
32
+ UseLoadedAssemblies ,
33
+
34
+ /// <summary>
35
+ /// Scan for assemblies in DLLs from the working directory. This is the fallback when GetEntryAssembly is null.
36
+ /// </summary>
37
+ AlwaysScanDllFiles
38
+ }
39
+
24
40
/// <summary>
25
41
/// Extends <see cref="LoggerConfiguration"/> with support for System.Configuration appSettings elements.
26
42
/// </summary>
@@ -38,19 +54,23 @@ public static class ConfigurationLoggerConfigurationExtensions
38
54
/// </summary>
39
55
/// <param name="settingConfiguration">Logger setting configuration.</param>
40
56
/// <param name="configuration">A configuration object which contains a Serilog section.</param>
41
- /// <param name="dependencyContext">The dependency context from which sink/enricher packages can be located. If not supplied, the platform
42
- /// default will be used.</param>
57
+ /// <param name="dependencyContext">The dependency context from which sink/enricher packages can be located.</param>
58
+ /// <param name="onNullDependencyContext">If dependency context is not supplied, either the platform default or DLL scanning may be used.</param>
43
59
/// <returns>An object allowing configuration to continue.</returns>
44
60
public static LoggerConfiguration Configuration (
45
61
this LoggerSettingsConfiguration settingConfiguration ,
46
62
IConfiguration configuration ,
47
- DependencyContext dependencyContext = null )
63
+ DependencyContext dependencyContext = null ,
64
+ ConfigurationAssemblySource onNullDependencyContext = ConfigurationAssemblySource . UseLoadedAssemblies )
48
65
{
49
66
if ( configuration == null ) throw new ArgumentNullException ( nameof ( configuration ) ) ;
50
67
return settingConfiguration . Settings (
51
68
new ConfigurationReader (
52
69
configuration ,
53
- dependencyContext ?? ( Assembly . GetEntryAssembly ( ) != null ? DependencyContext . Default : null ) ) ) ;
70
+ dependencyContext ??
71
+ ( onNullDependencyContext == ConfigurationAssemblySource . UseLoadedAssemblies
72
+ && Assembly . GetEntryAssembly ( ) != null
73
+ ? DependencyContext . Default : null ) ) ) ;
54
74
}
55
75
56
76
/// <summary>
@@ -59,21 +79,25 @@ public static LoggerConfiguration Configuration(
59
79
/// </summary>
60
80
/// <param name="settingConfiguration">Logger setting configuration.</param>
61
81
/// <param name="configSection">The Serilog configuration section</param>
62
- /// <param name="dependencyContext">The dependency context from which sink/enricher packages can be located. If not supplied, the platform
63
- /// default will be used.</param>
82
+ /// <param name="dependencyContext">The dependency context from which sink/enricher packages can be located.</param>
83
+ /// <param name="onNullDependencyContext">If dependency context is not supplied, either the platform default or DLL scanning may be used.</param>
64
84
/// <returns>An object allowing configuration to continue.</returns>
65
85
public static LoggerConfiguration ConfigurationSection (
66
86
this LoggerSettingsConfiguration settingConfiguration ,
67
87
IConfigurationSection configSection ,
68
- DependencyContext dependencyContext = null )
88
+ DependencyContext dependencyContext = null ,
89
+ ConfigurationAssemblySource onNullDependencyContext = ConfigurationAssemblySource . UseLoadedAssemblies )
69
90
{
70
91
if ( settingConfiguration == null ) throw new ArgumentNullException ( nameof ( settingConfiguration ) ) ;
71
92
if ( configSection == null ) throw new ArgumentNullException ( nameof ( configSection ) ) ;
72
93
73
94
return settingConfiguration . Settings (
74
95
new ConfigurationReader (
75
96
configSection ,
76
- dependencyContext ?? ( Assembly . GetEntryAssembly ( ) != null ? DependencyContext . Default : null ) ) ) ;
97
+ dependencyContext ??
98
+ ( onNullDependencyContext == ConfigurationAssemblySource . UseLoadedAssemblies
99
+ && Assembly . GetEntryAssembly ( ) != null
100
+ ? DependencyContext . Default : null ) ) ) ;
77
101
}
78
102
}
79
103
}
0 commit comments