Skip to content

Commit 1b8d281

Browse files
committed
Add a new overload of the Configuration method
This new overload is taking an explicit collection of configuration assemblies.
1 parent 406efa6 commit 1b8d281

File tree

2 files changed

+50
-2
lines changed

2 files changed

+50
-2
lines changed

README.md

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,13 +111,26 @@ var logger = new LoggerConfiguration()
111111
.CreateLogger();
112112
```
113113

114+
Alternatively, you can also pass an array of configuration assemblies:
115+
116+
```csharp
117+
var configurationAssemblies = new[]
118+
{
119+
typeof(ConsoleLoggerConfigurationExtensions).Assembly,
120+
typeof(FileLoggerConfigurationExtensions).Assembly,
121+
};
122+
var logger = new LoggerConfiguration()
123+
.ReadFrom.Configuration(configuration, configurationAssemblies)
124+
.CreateLogger();
125+
```
126+
114127
For legacy .NET Framework projects it also scans default probing path(s).
115128

116129
For all other cases, as well as in the case of non-conventional configuration assembly names **DO** use [Using](#using-section-and-auto-discovery-of-configuration-assemblies) section.
117130

118-
#### .NET 5.0 Single File Applications
131+
#### .NET 5.0 onwards Single File Applications
119132

120-
Currently, auto-discovery of configuration assemblies is not supported in bundled mode. **DO** use [Using](#using-section-and-auto-discovery-of-configuration-assemblies) section for workaround.
133+
Currently, auto-discovery of configuration assemblies is not supported in bundled mode. **DO** use [Using](#using-section-and-auto-discovery-of-configuration-assemblies) section or explicitly pass a collection of configuration assemblies for workaround.
121134

122135
### MinimumLevel, LevelSwitches, overrides and dynamic reload
123136

src/Serilog.Settings.Configuration/ConfigurationLoggerConfigurationExtensions.cs

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
// limitations under the License.
1414

1515
using System;
16+
using System.Reflection;
1617
using Microsoft.Extensions.Configuration;
1718
using Microsoft.Extensions.DependencyModel;
1819
using Serilog.Configuration;
@@ -169,5 +170,39 @@ public static LoggerConfiguration ConfigurationSection(
169170

170171
return settingConfiguration.Settings(new ConfigurationReader(configSection, assemblyFinder, configuration: null));
171172
}
173+
174+
/// <summary>
175+
/// Reads logger settings from the provided configuration object using the provided section name.
176+
/// </summary>
177+
/// <param name="settingConfiguration">Logger setting configuration.</param>
178+
/// <param name="configuration">A configuration object which contains a Serilog section.</param>
179+
/// <param name="sectionName">A section name for section which contains a Serilog section.</param>
180+
/// <param name="assemblies">A collection of assemblies that contains sinks and other Types.</param>
181+
/// <returns>An object allowing configuration to continue.</returns>
182+
public static LoggerConfiguration Configuration(
183+
this LoggerSettingsConfiguration settingConfiguration,
184+
IConfiguration configuration,
185+
string sectionName,
186+
params Assembly[] assemblies)
187+
{
188+
if (settingConfiguration == null) throw new ArgumentNullException(nameof(settingConfiguration));
189+
if (configuration == null) throw new ArgumentNullException(nameof(configuration));
190+
if (sectionName == null) throw new ArgumentNullException(nameof(sectionName));
191+
192+
return settingConfiguration.Settings(new ConfigurationReader(configuration.GetSection(sectionName), assemblies, new ResolutionContext(configuration)));
193+
}
194+
195+
/// <summary>
196+
/// Reads logger settings from the provided configuration object using the default section name.
197+
/// </summary>
198+
/// <param name="settingConfiguration">Logger setting configuration.</param>
199+
/// <param name="configuration">A configuration object which contains a Serilog section.</param>
200+
/// <param name="assemblies">A collection of assemblies that contains sinks and other Types.</param>
201+
/// <returns>An object allowing configuration to continue.</returns>
202+
public static LoggerConfiguration Configuration(
203+
this LoggerSettingsConfiguration settingConfiguration,
204+
IConfiguration configuration,
205+
params Assembly[] assemblies)
206+
=> Configuration(settingConfiguration, configuration, DefaultSectionName, assemblies);
172207
}
173208
}

0 commit comments

Comments
 (0)