【发布时间】:2020-02-08 19:33:26
【问题描述】:
我正在尝试在 .Net Core 项目中使用 Serilog。我有 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);
我的第二个服务是使用 .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:尝试激活“MyService.Startup”时无法解析类型“Microsoft.Extensions.Logging.ILogger`1[MyService.Startup]”的服务。
【问题讨论】:
-
Serilog.Extensions.Hosting 应用于使其可用。
标签: .net-core serilog .net-core-3.1