serilog-settings-configuration icon indicating copy to clipboard operation
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?)

Open eymahesh-sellamuthu opened this issue 2 years ago • 1 comments

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
            {

            }

        }

    }
}

eymahesh-sellamuthu avatar Apr 18 '22 08:04 eymahesh-sellamuthu

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" />

0xced avatar May 13 '22 05:05 0xced