Siddharth Kumar
Siddharth Kumar

Reputation: 333

Configure Serilog to read from app json file gives an exception System.InvalidOperationException: 'Type Sample.CustomPolicy, Sample was not found.'

I am new to Serilog and have been trying out some code to configure Serilog using an App settings Json file based on GitHub package(https://github.com/serilog/serilog-settings-configuration).

I have a .NET 7.0 console application. I have added the following NuGet packages.

The content of the appsettings.json is

{
  "Appsettings": {
    "client_id": "",
    "client_secret": ""
  },
  "Serilog": {
    "Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.File" ],
    "MinimumLevel": "Debug",
    "WriteTo": [
      { "Name": "Console" },
      {
        "Name": "File",
        "Args": { "path": "Logs/log.txt" }
      }
    ],
    "Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId" ],
    "Destructure": [
      {
        "Name": "With",
        "Args": { "policy": "Sample.CustomPolicy, Sample" }
      },
      {
        "Name": "ToMaximumDepth",
        "Args": { "maximumDestructuringDepth": 4 }
      },
      {
        "Name": "ToMaximumStringLength",
        "Args": { "maximumStringLength": 100 }
      },
      {
        "Name": "ToMaximumCollectionCount",
        "Args": { "maximumCollectionCount": 10 }
      }
    ]
  }
}

In the Program.cs Main function the code is

var ConfigBuilder = new ConfigurationBuilder().AddJsonFile("appsettings.json").Build();
var logger = new LoggerConfiguration().ReadFrom.Configuration(ConfigBuilder).CreateLogger();

The code statement var logger = LoggerConfiguration().ReadFrom.Configuration(ConfigBuilder).CreateLogger() gives an exception

System.InvalidOperationException
  HResult=0x80131509
  Message=Type Sample.CustomPolicy, Sample was not found.
  Source=Serilog.Settings.Configuration
  StackTrace:
   at Serilog.Settings.Configuration.StringArgumentValue.ConvertTo(Type toType, ResolutionContext resolutionContext)
   at Serilog.Settings.Configuration.ConfigurationReader.<>c__DisplayClass22_2.<CallConfigurationMethods>b__3(<>f__AnonymousType9`2 <>h__TransparentIdentifier0)
   at System.Linq.Enumerable.SelectListPartitionIterator`2.ToList()
   at Serilog.Settings.Configuration.ConfigurationReader.CallConfigurationMethods(ILookup`2 methods, IReadOnlyCollection`1 configurationMethods, Object receiver)
   at Serilog.Settings.Configuration.ConfigurationReader.ApplyDestructuring(LoggerConfiguration loggerConfiguration)
   at Serilog.Settings.Configuration.ConfigurationReader.Configure(LoggerConfiguration loggerConfiguration)
   at Serilog.Configuration.LoggerSettingsConfiguration.Settings(ILoggerSettings settings)
   at Serilog.ConfigurationLoggerConfigurationExtensions.Configuration(LoggerSettingsConfiguration settingConfiguration, IConfiguration configuration, ConfigurationReaderOptions readerOptions)
   at TestConsoleApp.Program.Main(String[] args) in C:\Development\sdiServiceFramework\TestConsoleApp\Program.cs:line 46

Not sure what i am missing or doing wrong. Any help would be appreciated.

Regards Sid

Upvotes: 2

Views: 1189

Answers (1)

Dmitry Fedorkov
Dmitry Fedorkov

Reputation: 4417

{
  "Name": "With",
  "Args": { "policy": "Sample.CustomPolicy, Sample" }
},

This part is from the example. Just remove it.

Upvotes: 3

Related Questions