1313// limitations under the License.
1414
1515using System ;
16+ using System . Reflection ;
1617using Microsoft . Extensions . Configuration ;
1718using Microsoft . Extensions . DependencyModel ;
1819using Serilog . Configuration ;
@@ -116,7 +117,7 @@ public static LoggerConfiguration ConfigurationSection(
116117 /// <param name="settingConfiguration">Logger setting configuration.</param>
117118 /// <param name="configuration">A configuration object which contains a Serilog section.</param>
118119 /// <param name="sectionName">A section name for section which contains a Serilog section.</param>
119- /// <param name="configurationAssemblySource">Defines how the package identifies assemblies to scan for sinks and other Types .</param>
120+ /// <param name="configurationAssemblySource">Defines how the package identifies assemblies to scan for sinks and other types .</param>
120121 /// <returns>An object allowing configuration to continue.</returns>
121122 public static LoggerConfiguration Configuration (
122123 this LoggerSettingsConfiguration settingConfiguration ,
@@ -140,7 +141,7 @@ public static LoggerConfiguration Configuration(
140141 /// </summary>
141142 /// <param name="settingConfiguration">Logger setting configuration.</param>
142143 /// <param name="configuration">A configuration object which contains a Serilog section.</param>
143- /// <param name="configurationAssemblySource">Defines how the package identifies assemblies to scan for sinks and other Types .</param>
144+ /// <param name="configurationAssemblySource">Defines how the package identifies assemblies to scan for sinks and other types .</param>
144145 /// <returns>An object allowing configuration to continue.</returns>
145146 public static LoggerConfiguration Configuration (
146147 this LoggerSettingsConfiguration settingConfiguration ,
@@ -154,7 +155,7 @@ public static LoggerConfiguration Configuration(
154155 /// </summary>
155156 /// <param name="settingConfiguration">Logger setting configuration.</param>
156157 /// <param name="configSection">The Serilog configuration section</param>
157- /// <param name="configurationAssemblySource">Defines how the package identifies assemblies to scan for sinks and other Types .</param>
158+ /// <param name="configurationAssemblySource">Defines how the package identifies assemblies to scan for sinks and other types .</param>
158159 /// <returns>An object allowing configuration to continue.</returns>
159160 [ Obsolete ( "Use ReadFrom.Configuration(IConfiguration configuration, string sectionName, ConfigurationAssemblySource configurationAssemblySource) instead." ) ]
160161 public static LoggerConfiguration ConfigurationSection (
@@ -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