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中隐藏异常的行为是否仍然发生。