Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在使用Host.CreateDefaultBuilder装载的Web主机中配置日志记录_C#_Service_.net Core - Fatal编程技术网

C# 如何在使用Host.CreateDefaultBuilder装载的Web主机中配置日志记录

C# 如何在使用Host.CreateDefaultBuilder装载的Web主机中配置日志记录,c#,service,.net-core,C#,Service,.net Core,我正在将以下有效的WebHost.CreateDefaultBuilder方法调整为基于Host.CreateDefaultBuilder的方法,以便我可以使用UseWindowsService //正在工作 公共静态IWebHostBuilder CreateWebHostBuilder(字符串[]args)=> WebHost.CreateDefaultBuilder(args) .ConfigureLogging((hostingContext,logging)=> { ... }) .U

我正在将以下有效的
WebHost.CreateDefaultBuilder
方法调整为基于
Host.CreateDefaultBuilder
的方法,以便我可以使用
UseWindowsService

//正在工作
公共静态IWebHostBuilder CreateWebHostBuilder(字符串[]args)=>
WebHost.CreateDefaultBuilder(args)
.ConfigureLogging((hostingContext,logging)=>
{
...
})
.UseStartup();
}
当我尝试适应这个

公共静态IHostBuilder CreateHostBuilder(字符串[]args)=>
Host.CreateDefaultBuilder(args)
.UseWindowsService()
.ConfigureLogging((hostingContext,logging)=>
{//在这里试过了
...
})
.ConfigureWebHostDefaults(webBuilder=>
{
webBuilder.ConfigureLogging((hostingContext,logging)=>
{//我也在这里试过
...
});
.UseStartup();
});
我得到以下错误

无法解析类型的服务 “Microsoft.Extensions.Logging.iLogger工厂”,同时尝试 激活“MyProject.Startup”

在这里设置日志记录的适当方法是什么?

参考 只能将以下服务类型注入
启动
使用通用主机时的构造函数(
IHostBuilder
):

  • IWebHostEnvironment
  • I外部环境
  • I配置
而链接的
启动
似乎正在允许的服务之外注入

public Startup(ILoggerFactory loggerFactory)
{
  this._Factory = loggerFactory;
  this._Logger = loggerFactory.CreateLogger<Startup>();
}
公共启动(iLogger工厂Logger工厂)
{
该工厂=伐木厂;
这是._Logger=loggerFactory.CreateLogger();
}
根据链接的
启动
代码,记录器似乎未被使用,并且对记录器的一个引用被注释掉,因为根据使用位置的上下文,它是不需要的

我建议将
ILoggerFactory
的注入从
Startup
构造函数中移除,作为重构到新版本框架的一部分


原始示例代码提供的所有其他内容似乎都遵循文档中建议的格式,并且应该按照预期工作。

@Nkosi。。。我认为这不重要,因为WebHost.CreateWebHostBuilder版本可以正常工作。。。在这里,它是在一个粘贴箱,因为我不想超载的问题。过去,我在ConfigureServices或Configure blow-up下有配置选项,在日志/控制台中没有输出。目前,它正在工作,但如果无法在启动时登录,则故障排除非常困难。我相信
配置
仍然允许将工厂作为可注入参数之一谢谢。。。刚刚在《生长激素》杂志上找到了这方面的参考资料。遗憾的是,这个功能被破坏了。。。我已经在启动时删除了记录器,并启用了
webBuilder.CaptureStartupErrors(true)可能应该建议在文档中进行设置,因为日志记录不再起作用,不确定以前在ConfigureServices/Configure中隐藏异常的行为是否仍然发生。