Skip to content

Commit 88bab9f

Browse files
authored
Added the UseLogger extension method to provide access to IConfiguration. (#4)
1 parent d7ffee6 commit 88bab9f

File tree

3 files changed

+32
-0
lines changed

3 files changed

+32
-0
lines changed

Autofac.Extensions.DependencyInjection.AzureFunctions/ConfigurationExtensions.cs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,24 @@ public static IFunctionsHostBuilder UseAppSettings(this IFunctionsHostBuilder ho
9898
return hostBuilder;
9999
}
100100

101+
102+
/// <summary>
103+
/// Adds logging services to the specified HostBuilder
104+
/// </summary>
105+
/// <param name="hostBuilder">An instance of <see cref="IFunctionsHostBuilder"/>.</param>
106+
/// <param name="configure">The <see cref="ILoggingBuilder"/> configuration delegate.</param>
107+
/// <returns>The IFunctionsHostBuilder.</returns>
108+
public static IFunctionsHostBuilder UseLogger(this IFunctionsHostBuilder hostBuilder, Action<ILoggingBuilder, IConfiguration> configure)
109+
{
110+
var configuration = hostBuilder.Services.Where(x => x.ServiceType == typeof(IConfiguration)).SingleOrDefault()?.ImplementationInstance as IConfiguration;
111+
112+
hostBuilder.Services.AddLogging((config) => configure?.Invoke(config, configuration));
113+
114+
return hostBuilder;
115+
}
116+
117+
118+
101119
/// <summary>
102120
/// Share one instance of the component within the context of a single
103121
/// azure function trigger request.

SampleAutofacFunction/Startup.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using Autofac.Extensions.DependencyInjection.AzureFunctions;
33
using Microsoft.Azure.Functions.Extensions.DependencyInjection;
44
using Microsoft.Extensions.Configuration;
5+
using Microsoft.Extensions.Logging;
56
using SampleAutofacFunction.Settings;
67

78
[assembly: FunctionsStartup(typeof(SampleAutofacFunction.Startup))]
@@ -14,9 +15,15 @@ public override void Configure(IFunctionsHostBuilder builder)
1415
{
1516
builder
1617
.UseAppSettings()
18+
.UseLogger(ConfigureLogger)
1719
.UseAutofacServiceProviderFactory(ConfigureContainer);
1820
}
1921

22+
private void ConfigureLogger(ILoggingBuilder builder, IConfiguration config)
23+
{
24+
builder.AddConfiguration(config.GetSection("Logging"));
25+
}
26+
2027
private void ConfigureContainer(ContainerBuilder builder)
2128
{
2229
builder

SampleAutofacFunction/appsettings.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,11 @@
11
{
2+
"Logging": {
3+
"LogLevel": {
4+
"Default": "Information",
5+
"System": "Error"
6+
}
7+
},
8+
29
"MySettings": {
310
"Value1": "Value 1 from appsettings.json",
411
"Value2": "Value 2 from appsettings.json"

0 commit comments

Comments
 (0)