Я пытаюсь использовать Serilog в. Net Core проекте. У меня есть 2 службы, первая была обновлена с. Net Core 2.2 и в Program.cs для запуска приложения используется IWebHostBuilder. Здесь я создал свой регистратор и передал его в качестве параметра в UseSerilog (), и все работает как положено.
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureServices(services => services.AddAutofac())
.UseStartup<Startup>()
.UseSerilog(_logger);
Моя 2-я служба была создана с использованием шаблонов. Net Core 3 и использует IHostBuilder. Когда я пытаюсь использовать Serilog одним из следующих способов, я получаю ту же ошибку.
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseServiceProviderFactory(new AutofacServiceProviderFactory())
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>()
.UseSerilog(_logger);
});
или
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseServiceProviderFactory(new AutofacServiceProviderFactory())
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
})
.UseSerilog(_logger);
Дает мне эту ошибку
System.InvalidOperationException: невозможно разрешить службу для типа «Microsoft.Extensions.Logging.ILogger`1 [MyService.Startup]» при попытке активировать «MyService.Startup».
Я обнаружил записи в блоге которые поддерживают либо apporach, но это 2-й, который я считаю более правильным, но ни одна из них не работает. Вот ссылка на него. Другой блог здесь .