I'm looking for DI solution for the following problem. I'm writing a custom SeriLog sync that requires a dependency from my serviceprovider. I can't seem to figure out how to access my serviceprovider from services.AddLogging():
services.AddSingleton<ICosmosFactory, CosmosFactory>();
services.AddLogging((builder) =>
{
var logger = new LoggerConfiguration()
.MinimumLevel.Verbose()
.WriteTo.AzureCosmosDB(
client: sp.Client,
databaseName: "MyDb",
collectionName: "logging",
timeToLive: TimeSpan.FromDays(7)
)
.CreateLogger();
builder.AddSerilog(logger);
});
In this example, Serilogs Sync needs an instance of CosmosClient which is provided by CosmosFactory. The only way I can see to grab it is to do the following:
builder.Services.BuildServiceProvider()
This is not ideal as it could potentially create duplicates of my singleton services.