I have a ASP.NET Core 5 Web API application in which I am using Serilog
like this:
public static class Program
{
public static void Main(string[] args)
{
Log.Logger = new LoggerConfiguration()
.WriteTo.Console()
.CreateBootstrapLogger();
try
{
CreateHostBuilder(args).Build().Run();
}
// ...
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseSerilog((context, services, configuration) => configuration
.WriteTo.Console()
.ReadFrom.Configuration(context.Configuration))
.ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); });
}
I want to customize some configuration options before actually applying them.
For instance, in Elasticsearch Sink some options are of type Func<...>
which I can't define in appsettings.json nor in context.Configuration
directly.
I Know I can do all configuration in code, but I want the benefit of setting some options from appsettings.json and some others from code.
Is that possible?
If not, how do I configure a delegate type option (Func
, Action
) from appsettings.json?