serilog-settings-configuration
serilog-settings-configuration copied to clipboard
error CS1061: 'LoggerSettingsConfiguration' does not contain a definition for 'Configuration' and no accessible extension method 'Configuration' accepting a first argument of type 'LoggerSettingsConfiguration' could be found (are you missing a using directive or an assembly reference?)
ReadFrom.Configuration(configuration, "Logging") getting the below error from the Configuration extension method. It is not working with latest Microsoft.NET.Sdk.Functions (4.1.0). But it is working with version 3.0.3.
Error:
error CS1061: 'LoggerSettingsConfiguration' does not contain a definition for 'Configuration' and no accessible extension method 'Configuration' accepting a first argument of type 'LoggerSettingsConfiguration' could be found (are you missing a using directive or an assembly reference?)
Project File Details:
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<AzureFunctionsVersion>v4</AzureFunctionsVersion>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Azure.Functions.Extensions" Version="1.1.0" />
<PackageReference Include="Microsoft.Extensions.Configuration" Version="6.0.1" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="6.0.0" />
<PackageReference Include="Microsoft.NET.Sdk.Functions" Version="4.1.0" />
</ItemGroup>
Code:
using Microsoft.Azure.Functions.Extensions.DependencyInjection;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Serilog;
using System;
[assembly: FunctionsStartup(typeof(FunctionApp1.Startup))]
namespace FunctionApp1
{
public class Startup : FunctionsStartup
{
public override void Configure(IFunctionsHostBuilder builder)
{
var services = builder.Services;
var contentRootPath = Environment.GetEnvironmentVariable("Root");
var configurationBuilder = new ConfigurationBuilder()
.SetBasePath(contentRootPath)
.AddJsonFile("appsettings.json")
.AddEnvironmentVariables();
var configuration = configurationBuilder.Build();
services.AddSingleton<IConfiguration>(configuration);
try
{
var logConfiguration = new LoggerConfiguration().ReadFrom.Configuration(configuration, "Logging");
logConfiguration.Enrich.FromLogContext();
logConfiguration.Enrich.WithProperty("Service", "TEST");
Log.Logger = logConfiguration.CreateLogger();
}
finally
{
}
}
}
}
I get the error you describe if I add a package reference to Serilog
but without package reference to Serilog.Settings.Configuration
.
So, in addition to this
<PackageReference Include="Serilog" Version="2.11.0" />
also add this:
<PackageReference Include="Serilog.Settings.Configuration" Version="3.3.0" />